t.txt Page 1 8:45:24 am 3-Feb-2022 RMAC 2.1.13 (Win32)
1 =0000000B nb_bits_virgule_offset .equ 11
2 .dsp
3
4 ;movei #LSP_DSP_PAULA_internal_location3,R28 ; adresse sample actuelle, a virgule
RISC code generated with no origin defined
5 00000000 943C W movefa R1,R28
6 ;movei #LSP_DSP_PAULA_internal_increment3,R27
7 00000002 945B movefa R2,R27
8 00000004 A79A load (R28),R26 ; R26=current pointeur sample 16:16
9 00000006 A77B load (R27),R27 ; R27=increment 16:16
10 00000008 8B51 move R26,R17 ; R17 = pointeur sample a virgule avant increment
11 ;movei #LSP_DSP_PAULA_internal_length3,R25 ; =FIN
12 0000000A 9479 movefa R3,R25
13 0000000C 037A add R27,R26 ; R26=adresse+increment , a virgule
14 0000000E A737 load (R25),R23
15 00000010 9416 movefa R0,R22
16 00000012 7AFA cmp R23,R26
17 00000014 xxxx jr mi,DSP_LSP_routine_interruption_I2S_pas_fin_de_sample_channel3
18 ;nop
19 00000016 6571 shrq #nb_bits_virgule_offset,R17 ; ancien pointeur adresse sample partie entiere
20
21 ; fin de sample => on recharge les infos des registres externes
22 00000018 617A shlq #32-nb_bits_virgule_offset,R26
23 ;movei #LSP_DSP_PAULA_AUD3LEN,R27 ; fin, a virgule
24 0000001A 949B movefa R4,R27
25 0000001C 66BA shrq #32-nb_bits_virgule_offset,R26 ; on ne garde que la virgule
26 ;movei #LSP_DSP_PAULA_AUD3L,R24 ; sample location a virgule
27 0000001E 94B8 movefa R5,R24
28 00000020 A77B load (R27),R27
29 00000022 A717 load (R24),R23
30 00000024 BF3B store R27,(R25) ; update internal sample end, a virgule
31 00000026 2AFA or R23,R26 ; on garde la virgule en cours
32
33 DSP_LSP_routine_interruption_I2S_pas_fin_de_sample_channel3:
34 00000028 BF9A store R26,(R28) ; stocke internal sample pointeur, a virgule
35 0000002A 657A shrq #nb_bits_virgule_offset,R26 ; nouveau pointeur adresse sample partie entiere
36 ;shrq #nb_bits_virgule_offset,R17 ; ancien pointeur adresse sample partie entiere
37 0000002C 8B59 move R26,R25 ; R25 = nouveau pointeur sample
38 0000002E 26D1 and R22,R17 ; ancien pointeur sample modulo 4
39 00000030 26DA and R22,R26 ; nouveau pointeur sample modulo 4
40 ;movei #LSP_DSP_PAULA_AUD3DAT,R28 ; 4 octets actuels
41 00000032 189C subq #4,R28 ; de LSP_DSP_PAULA_internal_location3 => LSP_DSP_PAULA_AUD3DAT
42 00000034 3016 not R22 ; => %11
43 00000036 A795 load (R28),R21 ; R21 = octets actuels en stock
44 00000038 26D9 and R22,R25 ; R25 = position octet ^^� lire
45 0000003A 7A3A cmp R17,R26
46 0000003C xxxx jr eq,DSP_LSP_routine_interruption_I2S_pas_nouveau_long_word3
47 0000003E 63B9 shlq #3,R25 ; numero d'octet ^^� lire * 8
48
49 ; il faut rafraichir R21
50 00000040 A755 load (R26),R21 ; lit 4 nouveaux octets de sample
51 00000042 BF95 store R21,(R28) ; rafraichit le stockage des 4 octets
52
53 DSP_LSP_routine_interruption_I2S_pas_nouveau_long_word3:
54 ;movei #LSP_DSP_PAULA_AUD3VOL,R23/R24
55 00000044 189C subq #4,R28 ; de LSP_DSP_PAULA_AUD3DAT => LSP_DSP_PAULA_AUD3VOL
t.txt Page 2 8:45:24 am 3-Feb-2022 RMAC 2.1.13 (Win32)
56 00000046 2019 neg R25 ; -0 -8 -16 -24
57 ; R25=numero d'octet ^^� lire
58 ; ch2
59 ;movei #LSP_DSP_PAULA_internal_increment2,R27
60 00000048 94FB movefa R7,R27
61
62 0000004A 5F35 sh R25,R21 ; shift les 4 octets en stock vers la gauche, pour positionner l'octet ^^� lire en haut
63 0000004C A79C load (R28),R28 ; R23 = volume : 6 bits
64 0000004E 6F15 sharq #24,R21 ; descends l'octet ^^� lire
65 ; ch2
66 00000050 4795 imult R28,R21 ; unsigned multiplication : unsigned sample * volume => 8bits + 6 bits = 14 bits
67
68 ; R21=sample channel 3 on 14 bits
t.txt Page 3 8:45:24 am 3-Feb-2022 RMAC 2.1.13 (Win32)
Symbol Table
DSP_LSP_routine_interruption_I2S_pas_fin_de_sample_channel3 0000000000000028 t
DSP_LSP_routine_interruption_I2S_pas_nouveau_long_word3 0000000000000044 t
nb_bits_virgule_offset 000000000000000B a