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