File: lsp_SCPCD.s - Tab length: 1 2 4 8 - Lines: on off - No wrap: on off

; LSP sur Jaguar
; version 4 bytes reading at once
;
; OK - routine de replay Paula en I2S
; OK - routine de replay Paula en Timer 1
; OK - convertir player LSP en Timer 1
; OK - g�rer le changement de bpm dans le timer 1
; OK - init : signed 8 bits samples => unsigned 8 bits samples
; OK - LSP Init : longueur sample en bytes
; OK - mettre en place la console
; OK - basculer tout en 21:11 :
; OK - lire 4 octets par 4 octets de sample / attention � l'alignement du sample, lire les premiers octets en loadb et/ou loadw !
; - optimiser lecture lsp etc dans Timer 1


; - Timer 1 pour gestion LSP
; - I2S pour replay samples
;
; calcul bpm: FRQ=24/(60/bpm)= => 125 bpm=50hz
;
; samples Amiga = 8 bits signed PCM

;CC (Carry Clear) = %00100
;CS (Carry Set)   = %01000
;EQ (Equal)       = %00010
;MI (Minus)       = %11000
;NE (Not Equal)   = %00001
;PL (Plus)        = %10100
;HI (Higher)      = %00101
;T (True)         = %00000

        include "jaguar.inc"


CLEAR_BSS                       .equ                    1                                                                       ; 1=efface toute la BSS jusqu'a la fin de la ram utilis�e
LSP_DSP_Audio_frequence                                 .equ                    45000                           ; real hardware needs lower sample frequencies than emulators
nb_bits_virgule_offset                                  .equ                    10

display_infos_debug                             .equ                    1
DSP_DEBUG                                               .equ                    0
I2S_during_Timer1                               .equ                    0                                                                       ; 0= I2S waits while timer 1 / 1=IMASK cleared while Timer 1
LSP_avancer_module                              .equ                    1                                                               ; 1=incremente position dans le module

channel_1               .equ            1
channel_2               .equ            1
channel_3               .equ            1
channel_4               .equ            1

; ----------------------------
; parametres affichage
;ob_liste_originale                     equ             (ENDRAM-$4000)                                                  ; address of list (shadow)
ob_list_courante                        equ             ((ENDRAM-$4000)+$2000)                          ; address of read list
nb_octets_par_ligne                     equ             320
nb_lignes                                       equ             256

curseur_Y_min           .equ            8


DSP_STACK_SIZE  equ     32      ; long words
DSP_USP                 equ             (D_ENDRAM-(4*DSP_STACK_SIZE))
DSP_ISP                 equ             (DSP_USP-(4*DSP_STACK_SIZE))


; DSP



.opt "~Oall"

.text



                        .68000


        move.l          #INITSTACK, sp  
        move.w          #%0000011011000111, VMODE                       ; 320x256
        move.w          #$100,JOYSTICK

; clear BSS

        .if                     CLEAR_BSS=1
; clear BSS
        lea                     DEBUT_BSS,a0
        lea                     FIN_RAM,a1
        moveq           #0,d0
       
boucle_clean_BSS:
        move.b          d0,(a0)+
        cmp.l           a0,a1
        bne.s           boucle_clean_BSS
; clear stack
        lea                     INITSTACK-100,a0
        lea                     INITSTACK,a1
        moveq           #0,d0
       
boucle_clean_BSS2:
        move.b          d0,(a0)+
        cmp.l           a0,a1
        bne.s           boucle_clean_BSS2

; clear object list
        lea                     ob_list_courante,a0
        lea                     ENDRAM,a1
        moveq           #0,d0
       
boucle_clean_BSS3:
        move.b          d0,(a0)+
        cmp.l           a0,a1
        bne.s           boucle_clean_BSS3
        .endif

;check ntsc ou pal:

        moveq           #0,d0
        move.w          JOYBUTS ,d0

        move.l          #26593900,frequence_Video_Clock                 ; PAL
        move.l          #415530,frequence_Video_Clock_divisee

       
        btst            #4,d0
        beq.s           jesuisenpal
jesuisenntsc:
        move.l          #26590906,frequence_Video_Clock                 ; NTSC
        move.l          #415483,frequence_Video_Clock_divisee
jesuisenpal:


        move.l  #0,D_CTRL
; copie du code DSP dans la RAM DSP

        lea             YM_DSP_debut,A0
        lea             D_RAM,A1
        move.l  #YM_DSP_fin-DSP_base_memoire,d0
        lsr.l   #2,d0
        sub.l   #1,D0
boucle_copie_bloc_DSP:
        move.l  (A0)+,(A1)+
        dbf             D0,boucle_copie_bloc_DSP

; init LSP

        lea             LSP_module_music_data,a0
        lea             LSP_module_sound_bank,a1
        jsr             LSP_PlayerInit

;               Out :   a0: music BPM pointer (16bits).w
;                               d0: music len in tick count

    bsr     InitVideo                   ; Setup our video registers.

        jsr     copy_olist                      ; use Blitter to update active list from shadow

        move.l  #ob_list_courante,d0                                    ; set the object list pointer
        swap    d0
        move.l  d0,OLP

        lea             CLUT,a2
        move.l  #255-2,d7
        moveq   #0,d0
       
copie_couleurs:
        move.w  d0,(a2)+
        addq.l  #5,d0
        dbf             d7,copie_couleurs

        lea             CLUT+2,a2
        move.w  #$F00F,(a2)+
       
        move.l  #VBL,LEVEL0             ; Install 68K LEVEL0 handler
        move.w  a_vde,d0                        ; Must be ODD
        sub.w   #16,d0
        ori.w   #1,d0
        move.w  d0,VI

        move.w  #%01,INT1                       ; Enable video interrupts 11101


        ;and.w   #%1111100011111111,sr                          ; 1111100011111111 => bits 8/9/10 = 0
        and.w   #$f8ff,sr

; CLS
        moveq   #0,d0
        bsr             print_caractere

; init DSP

        lea             chaine_LSP,a0
        bsr             print_string


; launch DSP

        move.l  #REGPAGE,D_FLAGS
        move.l  #DSP_routine_init_DSP,D_PC
        move.l  #DSPGO,D_CTRL
        move.l  #0,vbl_counter


; calcul RAM DSP
       
        lea                     chaine_RAM_DSP,a0
        bsr                     print_string
        move.l          #D_ENDRAM,d0
        sub.l           debut_ram_libre_DSP,d0
        bsr                     print_nombre_4_chiffres
; ligne suivante
        moveq           #10,d0
        bsr                     print_caractere



; on attend le DSP
        moveq   #5,d7
.boucle_attente:
        move.l          vbl_counter,d0
.waitVBL2:
        move.l          vbl_counter,d1
        cmp.l           d0,d1
        beq             .waitVBL2
        dbf             d7,.boucle_attente


        move.w          #85,couleur_char




; replay frequency
        lea                     chaine_replay_frequency,a0
        bsr                     print_string

        move.l          DSP_frequence_de_replay_reelle_I2S,d0
        bsr                     print_nombre_5_chiffres

        lea                     chaine_Hz_init_LSP,a0
        bsr                     print_string

        move.w          #145,couleur_char
       
        lea                     chaine_playing_LSP,a0
        bsr                     print_string
       
        move.w          #245,couleur_char

        lea                     chaine_entete_debug_module,a0
        bsr                     print_string



        .if                     display_infos_debug=0
titi:           bra             titi
        .endif
toto:

; affiche les registres internes
        move.l  LSP_DSP_PAULA_internal_location0,d0
        .if             nb_bits_virgule_offset<9
                lsr.l   #nb_bits_virgule_offset,d0
        .else
                lsr.l   #8,d0
                lsr.l   #nb_bits_virgule_offset-8,d0
        .endif
        bsr             print_nombre_hexa_8_chiffres
        move.l  #' ',d0
        bsr             print_caractere
        move.l  LSP_DSP_PAULA_internal_increment0,d0
        bsr             print_nombre_hexa_8_chiffres
        move.l  #' ',d0
        bsr             print_caractere
        move.l  #0,d0
        bsr             print_nombre_hexa_8_chiffres
        move.l  #' ',d0
        bsr             print_caractere
        move.l  LSP_DSP_PAULA_internal_length0,d0
        .if             nb_bits_virgule_offset<9
                lsr.l   #nb_bits_virgule_offset,d0
        .else
                lsr.l   #8,d0
                lsr.l   #nb_bits_virgule_offset-8,d0
        .endif
        bsr             print_nombre_hexa_8_chiffres

        ; ligne suivant
        moveq   #10,d0
        bsr             print_caractere

        move.l  LSP_DSP_PAULA_internal_location1,d0
        bsr             print_nombre_hexa_8_chiffres
        move.l  #' ',d0
        bsr             print_caractere
        move.l  LSP_DSP_PAULA_internal_increment1,d0
        bsr             print_nombre_hexa_8_chiffres
        move.l  #' ',d0
        bsr             print_caractere
        move.l  #0,d0
        bsr             print_nombre_hexa_8_chiffres
        move.l  #' ',d0
        bsr             print_caractere
        move.l  LSP_DSP_PAULA_internal_length1,d0
        bsr             print_nombre_hexa_8_chiffres


        ; ligne suivant
        moveq   #10,d0
        bsr             print_caractere

        move.l  LSP_DSP_PAULA_internal_location2,d0
        bsr             print_nombre_hexa_8_chiffres
        move.l  #' ',d0
        bsr             print_caractere
        move.l  LSP_DSP_PAULA_internal_increment2,d0
        bsr             print_nombre_hexa_8_chiffres
        move.l  #' ',d0
        bsr             print_caractere
        move.l  #0,d0
        bsr             print_nombre_hexa_8_chiffres
        move.l  #' ',d0
        bsr             print_caractere
        move.l  LSP_DSP_PAULA_internal_length2,d0
        bsr             print_nombre_hexa_8_chiffres


        ; ligne suivant
        moveq   #10,d0
        bsr             print_caractere



        move.l  LSP_DSP_PAULA_internal_location3,d0
        .if             nb_bits_virgule_offset<9
                lsr.l   #nb_bits_virgule_offset,d0
        .else
                lsr.l   #8,d0
                lsr.l   #nb_bits_virgule_offset-8,d0
        .endif
        bsr             print_nombre_hexa_8_chiffres
        move.l  #' ',d0
        bsr             print_caractere
        move.l  LSP_DSP_PAULA_internal_increment3,d0
        bsr             print_nombre_hexa_8_chiffres
        move.l  #' ',d0
        bsr             print_caractere
        move.l  #0,d0
        bsr             print_nombre_hexa_8_chiffres
        move.l  #' ',d0
        bsr             print_caractere
        move.l  LSP_DSP_PAULA_internal_length3,d0
        .if             nb_bits_virgule_offset<9
                lsr.l   #nb_bits_virgule_offset,d0
        .else
                lsr.l   #8,d0
                lsr.l   #nb_bits_virgule_offset-8,d0
        .endif
        bsr             print_nombre_hexa_8_chiffres


        ; ligne suivant
        moveq   #10,d0
        bsr             print_caractere

; saute une ligne
        ; ligne suivant
        moveq   #10,d0
        bsr             print_caractere


        lea                     chaine_entete_debug_module2,a0
        bsr                     print_string


; affiche les registres externes
        move.l  LSP_DSP_PAULA_AUD0L,d0
        bsr             print_nombre_hexa_8_chiffres
        move.l  #' ',d0
        bsr             print_caractere
        move.l  LSP_DSP_PAULA_AUD0LEN,d0
        bsr             print_nombre_hexa_8_chiffres
        move.l  #' ',d0
        bsr             print_caractere
        move.l  LSP_DSP_PAULA_AUD0PER,d0
        bsr             print_nombre_hexa_8_chiffres
        move.l  #' ',d0
        bsr             print_caractere
        move.l  LSP_DSP_PAULA_AUD0VOL,d0
        bsr             print_nombre_hexa_8_chiffres
        ; ligne suivant
        moveq   #10,d0
        bsr             print_caractere

        move.l  LSP_DSP_PAULA_AUD1L,d0
        bsr             print_nombre_hexa_8_chiffres
        move.l  #' ',d0
        bsr             print_caractere
        move.l  LSP_DSP_PAULA_AUD1LEN,d0
        bsr             print_nombre_hexa_8_chiffres
        move.l  #' ',d0
        bsr             print_caractere
        move.l  LSP_DSP_PAULA_AUD1PER,d0
        bsr             print_nombre_hexa_8_chiffres
        move.l  #' ',d0
        bsr             print_caractere
        move.l  LSP_DSP_PAULA_AUD1VOL,d0
        bsr             print_nombre_hexa_8_chiffres
        ; ligne suivant
        moveq   #10,d0
        bsr             print_caractere

        move.l  LSP_DSP_PAULA_AUD2L,d0
        bsr             print_nombre_hexa_8_chiffres
        move.l  #' ',d0
        bsr             print_caractere
        move.l  LSP_DSP_PAULA_AUD2LEN,d0
        bsr             print_nombre_hexa_8_chiffres
        move.l  #' ',d0
        bsr             print_caractere
        move.l  LSP_DSP_PAULA_AUD2PER,d0
        bsr             print_nombre_hexa_8_chiffres
        move.l  #' ',d0
        bsr             print_caractere
        move.l  LSP_DSP_PAULA_AUD2VOL,d0
        bsr             print_nombre_hexa_8_chiffres
        ; ligne suivant
        moveq   #10,d0
        bsr             print_caractere

        move.l  LSP_DSP_PAULA_AUD3L,d0
        .if             nb_bits_virgule_offset<9
                lsr.l   #nb_bits_virgule_offset,d0
        .else
                lsr.l   #8,d0
                lsr.l   #nb_bits_virgule_offset-8,d0
        .endif
        bsr             print_nombre_hexa_8_chiffres
        move.l  #' ',d0
        bsr             print_caractere
        move.l  LSP_DSP_PAULA_AUD3LEN,d0
        .if             nb_bits_virgule_offset<9
                lsr.l   #nb_bits_virgule_offset,d0
        .else
                lsr.l   #8,d0
                lsr.l   #nb_bits_virgule_offset-8,d0
        .endif
        bsr             print_nombre_hexa_8_chiffres
        move.l  #' ',d0
        bsr             print_caractere
        move.l  LSP_DSP_PAULA_AUD3PER,d0
        bsr             print_nombre_hexa_8_chiffres
        move.l  #' ',d0
        bsr             print_caractere
        move.l  LSP_DSP_PAULA_AUD3VOL,d0
        bsr             print_nombre_hexa_8_chiffres
        ; ligne suivant
        moveq   #10,d0
        bsr             print_caractere
        ; ligne suivant
        moveq   #10,d0
        bsr             print_caractere


        move.l  LSP_DSP_PAULA_AUD0DAT,d0
        bsr             print_nombre_hexa_8_chiffres
        move.l  #' ',d0
        bsr             print_caractere
        move.l  LSP_DSP_PAULA_AUD1DAT,d0
        bsr             print_nombre_hexa_8_chiffres
        move.l  #' ',d0
        bsr             print_caractere
        move.l  LSP_DSP_PAULA_AUD2DAT,d0
        bsr             print_nombre_hexa_8_chiffres
        move.l  #' ',d0
        bsr             print_caractere
        move.l  LSP_DSP_PAULA_AUD3DAT,d0
        bsr             print_nombre_hexa_8_chiffres
        move.l  #' ',d0
        bsr             print_caractere

        .rept   11
        ; retour a la ligne      au dessus
        moveq   #8,d0
        bsr             print_caractere
        .endr


        bra                     toto

        stop            #$2700


;-----------------------------------------------------------------------------------
;--------------------------
; VBL

VBL:
                movem.l d0-d7/a0-a6,-(a7)
                               
                                .if             display_infos_debug=1
                                ;add.w          #1,BG                                   ; debug pour voir si vivant
                                .endif

                jsr     copy_olist                      ; use Blitter to update active list from shadow

                addq.l  #1,vbl_counter

                move.w  #$101,INT1                      ; Signal we're done
                                move.w  #$0,INT2
.exit:
                movem.l (a7)+,d0-d7/a0-a6
                rte

; ---------------------------------------
; imprime une chaine termin�e par un z�ro
; a0=pointeur sur chaine
print_string:
        movem.l d0-d7/a0-a6,-(a7)      

print_string_boucle:
        moveq   #0,d0
        move.b  (a0)+,d0
        cmp.w   #0,d0
        bne.s   print_string_pas_fin_de_chaine
        movem.l (a7)+,d0-d7/a0-a6
        rts
print_string_pas_fin_de_chaine:
        bsr             print_caractere
        bra.s   print_string_boucle

; ---------------------------------------
; imprime un nombre HEXA de 2 chiffres
print_nombre_hexa_2_chiffres:
        movem.l d0-d7/a0-a6,-(a7)
        lea             convert_hexa,a0
        move.l          d0,d1
        divu            #16,d0
        and.l           #$F,d0                  ; limite a 0-15
        move.l          d0,d2
        mulu            #16,d2
        sub.l           d2,d1
        move.b          (a0,d0.w),d0
        bsr                     print_caractere
        move.l          d1,d0
        and.l           #$F,d0                  ; limite a 0-15
        move.b          (a0,d0.w),d0
        bsr                     print_caractere
        movem.l (a7)+,d0-d7/a0-a6
        rts
       
convert_hexa:
        dc.b            48,49,50,51,52,53,54,55,56,57
        dc.b            65,66,67,68,69,70
        even
       
; ---------------------------------------
; imprime un nombre de 2 chiffres
print_nombre_2_chiffres:
        movem.l d0-d7/a0-a6,-(a7)
        move.l          d0,d1
        divu            #10,d0
        and.l           #$FF,d0
        move.l          d0,d2
        mulu            #10,d2
        sub.l           d2,d1
        cmp.l           #0,d0
        beq.s           .zap
        add.l           #48,d0
        bsr                     print_caractere
.zap:
        move.l          d1,d0
        add.l           #48,d0
        bsr                     print_caractere
        movem.l (a7)+,d0-d7/a0-a6
        rts

; ---------------------------------------
; imprime un nombre de 3 chiffres
print_nombre_3_chiffres:
        movem.l d0-d7/a0-a6,-(a7)
        move.l          d0,d1

        divu            #100,d0
        and.l           #$FF,d0
        move.l          d0,d2
        mulu            #100,d2
        sub.l           d2,d1
        cmp.l           #0,d0
        beq.s           .zap
        add.l           #48,d0
        bsr                     print_caractere
.zap:
        move.l          d1,d0  
        divu            #10,d0
        and.l           #$FF,d0
        move.l          d0,d2
        mulu            #10,d2
        sub.l           d2,d1
        add.l           #48,d0
        bsr                     print_caractere
       
        move.l          d1,d0
        add.l           #48,d0
        bsr                     print_caractere
        movem.l (a7)+,d0-d7/a0-a6
        rts


; ---------------------------------------
; imprime un nombre de 2 chiffres , 00
print_nombre_2_chiffres_force:
        movem.l d0-d7/a0-a6,-(a7)
        move.l          d0,d1
        divu            #10,d0
        and.l           #$FF,d0
        move.l          d0,d2
        mulu            #10,d2
        sub.l           d2,d1
        add.l           #48,d0
        bsr                     print_caractere
        move.l          d1,d0
        add.l           #48,d0
        bsr                     print_caractere
        movem.l (a7)+,d0-d7/a0-a6
        rts

; ---------------------------------------
; imprime un nombre de 4 chiffres HEXA
print_nombre_hexa_4_chiffres:
        movem.l d0-d7/a0-a6,-(a7)
        move.l          d0,d1
        lea             convert_hexa,a0

        divu            #4096,d0
        and.l           #$FF,d0
        move.l          d0,d2
        mulu            #4096,d2
        sub.l           d2,d1
        move.b          (a0,d0.w),d0
        bsr                     print_caractere

        move.l          d1,d0
        divu            #256,d0
        and.l           #$FF,d0
        move.l          d0,d2
        mulu            #256,d2
        sub.l           d2,d1
        move.b          (a0,d0.w),d0
        bsr                     print_caractere


        move.l          d1,d0
        divu            #16,d0
        and.l           #$FF,d0
        move.l          d0,d2
        mulu            #16,d2
        sub.l           d2,d1
        move.b          (a0,d0.w),d0
        bsr                     print_caractere
        move.l          d1,d0
        move.b          (a0,d0.w),d0
        bsr                     print_caractere
        movem.l (a7)+,d0-d7/a0-a6
        rts

; ---------------------------------------
; imprime un nombre de 6 chiffres HEXA ( pour les adresses memoire)
print_nombre_hexa_6_chiffres:
        movem.l d0-d7/a0-a6,-(a7)
       
        move.l          d0,d1
        lea             convert_hexa,a0

        move.l          d1,d0
        swap            d0
        and.l           #$F0,d0
        divu            #16,d0
        and.l           #$F,d0
        move.b          (a0,d0.w),d0
        and.l           #$FF,d0
        bsr                     print_caractere

        move.l          d1,d0
        swap            d0
        and.l           #$F,d0
        move.b          (a0,d0.w),d0
        and.l           #$FF,d0
        bsr                     print_caractere

        and.l           #$FFFF,d1
        move.l          d1,d0
        divu            #4096,d0
        and.l           #$FF,d0
        move.l          d0,d2
        mulu            #4096,d2
        sub.l           d2,d1
        move.b          (a0,d0.w),d0
        bsr                     print_caractere

        move.l          d1,d0
        divu            #256,d0
        and.l           #$FF,d0
        move.l          d0,d2
        mulu            #256,d2
        sub.l           d2,d1
        move.b          (a0,d0.w),d0
        bsr                     print_caractere


        move.l          d1,d0
        divu            #16,d0
        and.l           #$FF,d0
        move.l          d0,d2
        mulu            #16,d2
        sub.l           d2,d1
        move.b          (a0,d0.w),d0
        bsr                     print_caractere
        move.l          d1,d0
        move.b          (a0,d0.w),d0
        bsr                     print_caractere
        movem.l (a7)+,d0-d7/a0-a6
        rts

; ---------------------------------------
; imprime un nombre de 8 chiffres HEXA ( pour les adresses memoire et les donn�es en 16:16)
print_nombre_hexa_8_chiffres:
        movem.l d0-d7/a0-a6,-(a7)
       
        move.l          d0,d1
        lea             convert_hexa,a0

        move.l          d1,d0
        swap            d0
        and.l           #$F000,d0
        divu            #4096,d0
        and.l           #$F,d0
        move.b          (a0,d0.w),d0
        and.l           #$FF,d0
        bsr                     print_caractere



        move.l          d1,d0
        swap            d0
        and.l           #$F00,d0
        divu            #256,d0
        and.l           #$F,d0
        move.b          (a0,d0.w),d0
        and.l           #$FF,d0
        bsr                     print_caractere


        move.l          d1,d0
        swap            d0
        and.l           #$F0,d0
        divu            #16,d0
        and.l           #$F,d0
        move.b          (a0,d0.w),d0
        and.l           #$FF,d0
        bsr                     print_caractere

        move.l          d1,d0
        swap            d0
        and.l           #$F,d0
        move.b          (a0,d0.w),d0
        and.l           #$FF,d0
        bsr                     print_caractere

        and.l           #$FFFF,d1
        move.l          d1,d0
        divu            #4096,d0
        and.l           #$FF,d0
        move.l          d0,d2
        mulu            #4096,d2
        sub.l           d2,d1
        move.b          (a0,d0.w),d0
        bsr                     print_caractere

        move.l          d1,d0
        divu            #256,d0
        and.l           #$FF,d0
        move.l          d0,d2
        mulu            #256,d2
        sub.l           d2,d1
        move.b          (a0,d0.w),d0
        bsr                     print_caractere


        move.l          d1,d0
        divu            #16,d0
        and.l           #$FF,d0
        move.l          d0,d2
        mulu            #16,d2
        sub.l           d2,d1
        move.b          (a0,d0.w),d0
        bsr                     print_caractere
        move.l          d1,d0
        move.b          (a0,d0.w),d0
        bsr                     print_caractere
        movem.l (a7)+,d0-d7/a0-a6
        rts


; ---------------------------------------
; imprime un nombre de 4 chiffres
print_nombre_4_chiffres:
        movem.l d0-d7/a0-a6,-(a7)
        move.l          d0,d1

        divu            #1000,d0
        and.l           #$FF,d0
        move.l          d0,d2
        mulu            #1000,d2
        sub.l           d2,d1
        add.l           #48,d0
        bsr                     print_caractere

        move.l          d1,d0
        divu            #100,d0
        and.l           #$FF,d0
        move.l          d0,d2
        mulu            #100,d2
        sub.l           d2,d1
        add.l           #48,d0
        bsr                     print_caractere


        move.l          d1,d0
        divu            #10,d0
        and.l           #$FF,d0
        move.l          d0,d2
        mulu            #10,d2
        sub.l           d2,d1
        add.l           #48,d0
        bsr                     print_caractere
        move.l          d1,d0
        add.l           #48,d0
        bsr                     print_caractere
        movem.l (a7)+,d0-d7/a0-a6
        rts

; ---------------------------------------
; imprime un nombre de 5 chiffres
print_nombre_5_chiffres:
        movem.l d0-d7/a0-a6,-(a7)
        move.l          d0,d1

        divu            #10000,d0
        and.l           #$FF,d0
        move.l          d0,d2
        mulu            #10000,d2
        sub.l           d2,d1
        add.l           #48,d0
        bsr                     print_caractere

        move.l          d1,d0
        divu            #1000,d0
        and.l           #$FF,d0
        move.l          d0,d2
        mulu            #1000,d2
        sub.l           d2,d1
        add.l           #48,d0
        bsr                     print_caractere

        move.l          d1,d0
        divu            #100,d0
        and.l           #$FF,d0
        move.l          d0,d2
        mulu            #100,d2
        sub.l           d2,d1
        add.l           #48,d0
        bsr                     print_caractere


        move.l          d1,d0
        divu            #10,d0
        and.l           #$FF,d0
        move.l          d0,d2
        mulu            #10,d2
        sub.l           d2,d1
        add.l           #48,d0
        bsr                     print_caractere
        move.l          d1,d0
        add.l           #48,d0
        bsr                     print_caractere
        movem.l (a7)+,d0-d7/a0-a6
        rts


; -----------------------------
; copie un caractere a l ecran
; d0.w=caractere

print_caractere:
        movem.l d0-d7/a0-a6,-(a7)



        cmp.b   #00,d0
        bne.s   print_caractere_pas_CLS
        move.l  #ecran1,A1_BASE                 ; = DEST
        move.l  #$0,A1_PIXEL
        move.l  #PIXEL16|XADDPHR|PITCH1,A1_FLAGS
        move.l  #ecran1+320*100,A2_BASE                 ; = source
        move.l  #$0,A2_PIXEL
        move.l  #PIXEL16|XADDPHR|PITCH1,A2_FLAGS
       
        move.w  #$00,B_PATD
       

        moveq   #0,d0
        move.w  #nb_octets_par_ligne,d0
        lsr.w   #1,d0
        move.w  #nb_lignes,d1
        mulu    d1,d0
        swap    d0
        move.w  #1,d0
        swap    d0
        ;move.w #65535,d0
        move.l  d0,B_COUNT
        move.l  #LFU_REPLACE|SRCEN|PATDSEL,B_CMD


        movem.l (a7)+,d0-d7/a0-a6
        rts
       
print_caractere_pas_CLS:

        cmp.b   #10,d0
        bne.s   print_caractere_pas_retourchariot
        move.w  #0,curseur_x
        add.w   #8,curseur_y
        movem.l (a7)+,d0-d7/a0-a6
        rts

print_caractere_pas_retourchariot:
        cmp.b   #09,d0
        bne.s   print_caractere_pas_retourdebutligne
        move.w  #0,curseur_x
        movem.l (a7)+,d0-d7/a0-a6
        rts

print_caractere_pas_retourdebutligne:
        cmp.b   #08,d0
        bne.s   print_caractere_pas_retourdebutligneaudessus
        move.w  #0,curseur_x
        sub.w   #8,curseur_y
        movem.l (a7)+,d0-d7/a0-a6
        rts


print_caractere_pas_retourdebutligneaudessus:

        lea             ecran1,a1
        moveq   #0,d1
        move.w  curseur_x,d1
        add.l   d1,a1
        moveq   #0,d1
        move.w  curseur_y,d1
        mulu    #nb_octets_par_ligne,d1
        add.l   d1,a1

        lsl.l   #3,d0           ; * 8
        lea             fonte,a0
        add.l   d0,a0
       
       
; copie 1 lettre
        move.l  #8-1,d0
copieC_ligne:
        moveq   #8-1,d1
        move.b  (a0)+,d2
copieC_colonne:
        moveq   #0,d4
        btst    d1,d2
        beq.s   pixel_a_zero
        moveq   #0,d4
        move.w  couleur_char,d4
pixel_a_zero:
        move.b  d4,(a1)+
        dbf             d1,copieC_colonne
        lea             nb_octets_par_ligne-8(a1),a1
        dbf             d0,copieC_ligne

        move.w  curseur_x,d0
        add.w   #8,d0
        cmp.w   #320,d0
        blt             curseur_pas_fin_de_ligne
        moveq   #0,d0
        add.w   #8,curseur_y
curseur_pas_fin_de_ligne:
        move.w  d0,curseur_x

        movem.l (a7)+,d0-d7/a0-a6

        rts


;----------------------------------
; recopie l'object list dans la courante

copy_olist:
                                move.l  #ob_list_courante,A1_BASE                       ; = DEST
                                move.l  #$0,A1_PIXEL
                                move.l  #PIXEL16|XADDPHR|PITCH1,A1_FLAGS
                                move.l  #ob_liste_originale,A2_BASE                     ; = source
                                move.l  #$0,A2_PIXEL
                                move.l  #PIXEL16|XADDPHR|PITCH1,A2_FLAGS
                                move.w  #1,d0
                                swap    d0
                                move.l  #fin_ob_liste_originale-ob_liste_originale,d1
                                move.w  d1,d0
                                move.l  d0,B_COUNT
                                move.l  #LFU_REPLACE|SRCEN,B_CMD
                                rts


        .if                     1=0
; ---------------------------------------
; allocation de m�moire
; malloc de d0, retour avec  un pointeur dans d0
; ---------------------------------------

YM_malloc:

        movem.l         d1-d3/a0,-(sp)

        move.l          debut_ram_libre,d1
        move.l          d1,a0
        move.l          d1,d3
; arrondit multiple de 2
    btst                #0,d0
        beq.s           YM_malloc_pas_d_arrondi
        addq.l          #1,d0
YM_malloc_pas_d_arrondi:
        add.l           d0,d1
        move.l          d1,debut_ram_libre
       
        move.l          d0,d2
        subq.l          #1,d2
        moveq.l         #0,d0

YM_malloc_boucle_clean_ram:
        move.b          d0,(a0)+
        dbf                     d2,YM_malloc_boucle_clean_ram
       
        move.l          d3,d0

        movem.l         (sp)+,d1-d3/a0
        rts

; ---------------------------------------
; allocation de m�moire version RAM DSP
; malloc de d0, retour avec  un pointeur dans d0
; d0 => forc�ment un multiple de 4
; ---------------------------------------

YM_malloc_DSP:

        movem.l         d1-d3/a0,-(sp)

        move.l          debut_ram_libre_DSP,d1
        move.l          d1,a0
        move.l          d1,d3
        add.l           d0,d1
        move.l          d1,debut_ram_libre_DSP
       
        move.l          d0,d2
        moveq.l         #0,d0
        lsr.l           #2,d2           ; 4 octets par 4 octets
        subq.l          #1,d2

YM_malloc_boucle_clean_ram_DSP:
        move.l          d0,(a0)+
        dbf                     d2,YM_malloc_boucle_clean_ram_DSP
       
        move.l          d3,d0

        movem.l         (sp)+,d1-d3/a0
        rts


        .endif
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;
;; Procedure: InitVideo (same as in vidinit.s)
;;            Build values for hdb, hde, vdb, and vde and store them.
;;

InitVideo:
                movem.l d0-d6,-(sp)

                               
                                move.w  #-1,ntsc_flag
                                move.l  #50,_50ou60hertz
       
                                move.w  CONFIG,d0                ; Also is joystick register
                andi.w  #VIDTYPE,d0              ; 0 = PAL, 1 = NTSC
                beq     .palvals
                                move.w  #1,ntsc_flag
                                move.l  #60,_50ou60hertz
       

.ntscvals:              move.w  #NTSC_HMID,d2
                move.w  #NTSC_WIDTH,d0

                move.w  #NTSC_VMID,d6
                move.w  #NTSC_HEIGHT,d4
                               
                bra     calc_vals
.palvals:
                                move.w #PAL_HMID,d2
                                move.w #PAL_WIDTH,d0

                                move.w #PAL_VMID,d6                            
                                move.w #PAL_HEIGHT,d4

                               
calc_vals:              
                move.w  d0,width
                move.w  d4,height
                move.w  d0,d1
                asr     #1,d1                   ; Width/2
                sub.w   d1,d2                   ; Mid - Width/2
                add.w   #4,d2                   ; (Mid - Width/2)+4
                sub.w   #1,d1                   ; Width/2 - 1
                ori.w   #$400,d1                ; (Width/2 - 1)|$400
                move.w  d1,a_hde
                move.w  d1,HDE
                move.w  d2,a_hdb
                move.w  d2,HDB1
                move.w  d2,HDB2
                move.w  d6,d5
                sub.w   d4,d5
                add.w   #16,d5
                move.w  d5,a_vdb
                add.w   d4,d6
                move.w  d6,a_vde
                       
                            move.w  a_vdb,VDB
                                move.w  a_vde,VDE    
                               
                               
                                move.l  #0,BORD1                ; Black border
                move.w  #0,BG                   ; Init line buffer to black
                movem.l (sp)+,d0-d6
                rts

; ------------------------------------
;          LSP
; ------------------------------------


; ------------------------------------
; Init

LSP_PlayerInit:
; a0: music data (any mem)
; a1: sound bank data (chip mem)
; (a2: 16bit DMACON word address)

;               Out:a0: music BPM pointer (16bits)
;                       d0: music len in tick count


                        cmpi.l          #'LSP1',(a0)+
                        bne                     .dataError
                        move.l          (a0)+,d0                ; unique id
                        cmp.l           (a1),d0                 ; check that sample bank is this one
                        bne                     .dataError

                        lea                     LSPVars,a3
                        cmpi.w          #$0105,(a0)+                    ; minimal major & minor version of latest compatible LSPConvert.exe              = V 1.05
                        blt                     .dataError

                        moveq           #0,d6
                        move.w          (a0)+,d6
                        move.l          d6,m_currentBpm-LSPVars(a3)             ; default BPM
                        move.l          d6,LSP_BPM_frequence_replay
                        move.w          (a0)+,d6
                        move.l          d6,m_escCodeRewind-LSPVars(a3)          ; tout en .L
                        move.w          (a0)+,d6
                        move.l          d6,m_escCodeSetBpm-LSPVars(a3)
                        move.l          (a0)+,-(a7)
                        ;move.l a2,m_dmaconPatch(a3)
                        ;move.w #$8000,-1(a2)                   ; Be sure DMACon word is $8000 (note: a2 should be ODD address)
                        moveq           #0,d0
                        move.w          (a0)+,d0                                ; instrument count
                        lea                     -12(a0),a2                              ; LSP data has -12 offset on instrument tab ( to win 2 cycles in fast player :) )
                        move.l          a2,m_lspInstruments-LSPVars(a3) ; instrument tab addr ( minus 4 )
                        subq.w          #1,d0
                        move.l          a1,d1

.relocLoop:    
                        ;bset.b         #0,3(a0)                                ; bit0 is relocation done flag
                        ;bne.s          .relocated
                       
                        move.l          (a0),d6                                 ; pointeur sample
                        add.l           d1,d6                                   ; passage de relatif en absolu
                        ;lsl.l          #nb_bits_virgule_offset,d6
                        move.l          d6,(a0)                                 ; pointeur sample

                       
                        moveq           #0,d6
                        move.w          4(a0),d6                                ; taille en words
                        add.w           d6,d6
                        move.w          d6,4(a0)                                ; taille en bytes

                        move.l          (a0),a4                                
                        bsr.s           LSP_unsigne_sample              ; A4=sample location / d6=length


                        move.l          6(a0),d6                                        ; pointeur sample repeat
                        add.l           d1,d6                                   ; passage de relatif en absolu
                        ;lsl.l          #nb_bits_virgule_offset,d6
                        move.l          d6,6(a0)                                        ; pointeur sample repeat
                       
                        moveq           #0,d6
                        move.w          10(a0),d6                               ; taille repeat en words
                        add.w           d6,d6
                        move.w          d6,10(a0)                               ; taille repeat en bytes

.relocated:    
                        lea                     12(a0),a0
                        dbf                     d0,.relocLoop
               
                        move.w          (a0)+,d0                                ; codes count (+2)
                        move.l          a0,m_codeTableAddr-LSPVars(a3)  ; code table
                        add.w           d0,d0
                        add.w           d0,a0
                        move.l          (a0)+,d0                                ; word stream size
                        move.l          (a0)+,d1                                ; byte stream loop point
                        move.l          (a0)+,d2                                ; word stream loop point

                        move.l          a0,m_wordStream-LSPVars(a3)
                        lea                     0(a0,d0.l),a1                   ; byte stream
                        move.l          a1,m_byteStream-LSPVars(a3)
                        add.l           d2,a0
                        add.l           d1,a1
                        move.l          a0,m_wordStreamLoop-LSPVars(a3)
                        move.l          a1,m_byteStreamLoop-LSPVars(a3)
                        ;bset.b         #1,$bfe001                              ; disabling this fucking Low pass filter!!
                        lea                     m_currentBpm-LSPVars(a3),a0
                        move.l          (a7)+,d0                                ; music len in frame ticks
                        rts

.dataError:     illegal

LSP_unsigne_sample:
; A4=sample location / d6=length
        movem.l         d0/d6/a4,-(sp)
        subq.l          #1,d6
        cmp.l           #0,d6
        blt.s           .quit
.boucle:
        move.b          (a4),d0                         ; -128 to 127
        sub.b           #$80,d0
        move.b          d0,(a4)+
        dbf                     d6,.boucle

.quit:
        movem.l         (sp)+,d0/d6/a4
        rts

       
       
        .text
       
;-------------------------------------
;
;     DSP
;
;-------------------------------------

        .phrase
YM_DSP_debut:

        .dsp
        .org    D_RAM
DSP_base_memoire:

; CPU interrupt
        .rept   8
                nop
        .endr
                                                                                                                                                                                                                                                                                                                                        |-----------------------|-----------------------|--------------------------
                                                                                                                                                                                                                                                                                                                                        |       Cycle1  (read regs)     |       Cycle2  (compute)       |       Cycle3 (writeback)
                                                                                                                                                                                                                                                                                                                                        |-----------------------|-----------------------|--------------------------
; I2S interrupt
        movei   #DSP_LSP_routine_interruption_I2S,r28                                           ; 6 octets                                                                                                                                                                      | Rword1                                |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                | word1                                 |       -
        movei   #D_FLAGS,r30                                                                                    ; 6 octets                                                                                                                                                                              | Rword1                                |       -                                       | word2word1 > Wr28
                                                                                                                                                                                                                                                                                                                                        | Rword2                                | word1                                 |       -
        jump    (r28)                                                                                                   ; 2 octets                                                                                                                                                                              | Rr28                                  |       -                                       | word2word1 > Wr30
        load    (r30),r29       ; read flags                                                            ; 2 octets = 16 octets                                                                                                                                                  | Rr30                                  | r28 > WPC                             |       -
                                                                                                                                                                                                                                                                                                                                        |       -                                       | Read FLAGS                    |       -
                                                                                                                                                                                                                                                                                                                                        |       (new instruction)       |       -                                       | Flags > Wr29
; Timer 1 interrupt
        movei   #DSP_LSP_routine_interruption_Timer1,r12                                                ; 6 octets                                                                                                                                                              | Rword1                                |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                | word1                                 |       -
        movei   #D_FLAGS,r16                                                                                    ; 6 octets                                                                                                                                                                              | Rword1                                |       -                                       | word2word1 > Wr12
                                                                                                                                                                                                                                                                                                                                        | Rword2                                | word1                                 |       -
        jump    (r12)                                                                                                   ; 2 octets                                                                                                                                                                              | Rr12                                  |       -                                       | word2word1 > Wr16
        load    (r16),r13       ; read flags                                                            ; 2 octets = 16 octets                                                                                                                                                  | Rr16                                  | r12 > WPC                             |       -
                                                                                                                                                                                                                                                                                                                                        |       -                                       | Read FLAGS                    |       -
                                                                                                                                                                                                                                                                                                                                        |       (new instruction)       |       -                                       | Flags > Wr13
; Timer 2 interrupt    
        movei   #DSP_LSP_routine_interruption_Timer2,r28                                                ; 6 octets                                                                                                                                                              | Rword1                                |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                | word1                                 |       -
        movei   #D_FLAGS,r30                                                                                    ; 6 octets                                                                                                                                                                              | Rword1                                |       -                                       | word2&word1 > Wr28
                                                                                                                                                                                                                                                                                                                                        | Rword2                                | word1                                 |       -
        jump    (r28)                                                                                                   ; 2 octets                                                                                                                                                                              | Rflags        & Rr28          |       -                                       | word2&word1 > Wr30
        load    (r30),r29       ; read flags                                                            ; 2 octets = 16 octets                                                                                                                                                  | Rr30                                  | r28 > WPC                             |       -
                                                                                                                                                                                                                                                                                                                                        |       -                                       | Read FLAGS                    |       -
                                                                                                                                                                                                                                                                                                                                        |       (new instruction)       |       -                                       | Flags > Wr29
; External 0 interrupt
        .rept   8
                nop
        .endr
; External 1 interrupt
        .rept   8
                nop
        .endr













; -------------------------------
; DSP : routines en interruption
; -------------------------------
; utilis�s :    R29/R30/R31
;                               R18/R19/R20/R21 /R22/R23/R24/R25/R26/R27/R28


; I2S : replay sample
;       - version simple, lit un octet � chaque fois
;       - puis version plus compleque : lit 1 long, et utilise ses octets
DSP_LSP_routine_interruption_I2S:

        .if             DSP_DEBUG
; change la couleur du fond
        movei   #$777,R26                                                                                                                                                                                                                                                                                               | Rword1                                |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        movei   #BG,r27                                                                                                                                                                                                                                                                                                 | Rword1                                |       -                                       |       word2word1 > Wr26
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        storew  r26,(r27)                                                                                                                                                                                                                                                                                               | Rr26  & Rr27                  |       -                                       |       word2word1 > Wr27
        .endif


; version complexe avec stockage de 4 octets
; channel 3
                movei           #LSP_DSP_PAULA_internal_location3,R28                                           ; adresse sample actuelle, a virgule                                                                                            | Rword1                                |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
                movei           #LSP_DSP_PAULA_internal_increment3,R27                                                                                                                                                                                                                  | Rword1                                |       -                                       |       word2word1 > Wr28
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
                load            (R28),R26                                                                               ; R26=current pointeur sample 16:16                                                                                                                             | Rr28                                  |       -                                       |       word2word1 > Wr27
                load            (R27),R27                                                                               ; R27=increment 16:16                                                                                                                                                   | Rr27                                  |       Mr28                            |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr27                            |       Wr26
                move            R26,R17                                                                                 ; R17 = pointeur sample a virgule avant increment                                                                                               | Rr26                                  |       -                                       |       Wr27
                movei           #LSP_DSP_PAULA_internal_length3,R25                             ; =FIN                                                                                                                                                                                  | Rword1                                |       -                                       |       Wr17
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       -                                       |       word2word1 > Wr25
                add                     R27,R26                                                                                 ; R26=adresse+increment , a virgule                                                                                                                             | Rr27  & Rr26                  |       -                                       |       -
                load            (R25),R23                                                                                                                                                                                                                                                                               | Rr25                                  |       Cr26                            |       -
                movei           #$FFFFFFFC,R22                                                                                                                                                                                                                                                                  | Rword1                                |       Mr25                            |       Wr26
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr23
                                                                                                                                                                                                                                                                                                                                        | -                                             |       -                                       |       word2word1 > Wr22
                cmp                     R23,R26                                                                                                                                                                                                                                                                                 | Rr23  & Rr26                  |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       -
                jr                      mi,DSP_LSP_routine_interruption_I2S_pas_fin_de_sample_channel3                                                                                                                                                                  | Rflags                                |       -                                       |       Wflags
                nop                                                                                                                                                                                                                                                                                                                     | -                                             |       ? > WPC                         |       -
; fin de sample => on recharge les infos des registres externes
                shlq            #32-nb_bits_virgule_offset,R26                                                                                                                                                                                                                                  | Rr26                                  |       -                                       |       -
                movei           #LSP_DSP_PAULA_AUD3LEN,R27                      ; fin, a virgule                                                                                                                                                                                        | Rword1                                |       Cr26                            |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr26
                shrq            #32-nb_bits_virgule_offset,R26          ; on ne garde que la virgule                                                                                                                                                            | Rr26                                  |       -                                       |       word2word1 > Wr27
                movei           #LSP_DSP_PAULA_AUD3L,R24                        ; sample location a virgule                                                                                                                                                                     | Rword1                                |       Cr26                            |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr26
                load            (R27),R27                                                                                                                                                                                                                                                                               | Rr27                                  |       -                                       |       word2word1 > Wr24
                load            (R24),R23                                                                                                                                                                                                                                                                               | Rr24                                  |       Mr27                            |       -
                store           R27,(R25)                                                       ; update internal sample end, a virgule                                                                                                                                         | Rr27  & Rr25                  |       Mr24                            |       Wr27
                or                      R23,R26                                                         ; on garde la virgule en cours                                                                                                                                                          | Rr23  & Rr26                  |       Mr25                            |       Wr23
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr26                            |       MWrite
DSP_LSP_routine_interruption_I2S_pas_fin_de_sample_channel3:
                store           R26,(R28)                                                       ; stocke internal sample pointeur, a virgule                                                                                                                            | Rr26  & Rr28                  |       -                                       |       Wr26
                shrq            #nb_bits_virgule_offset,R26                                                             ; nouveau pointeur adresse sample partie entiere                                                                                | Rr26                                  |       Mr28                            |       -
                shrq            #nb_bits_virgule_offset,R17                                                             ; ancien pointeur adresse sample partie entiere                                                                                 | Rr17                                  |       Cr26                            |       MWrite
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr17                            |       Wr26
                move            R26,R25                                                         ; R25 = nouveau pointeur sample                                                                                                                                                         | Rr26                                  |       -                                       |       Wr17
                                                                                                                                                                                                                                                                                                                                        | -                                             |       -                                       |       Wr25
                and                     R22,R17                                                         ; ancien pointeur sample modulo 4                                                                                                                                                       | Rr22  & Rr17                  |       -                                       |       -
                and                     R22,R26                                                         ; nouveau pointeur sample modulo 4                                                                                                                                                      | Rr22  & Rr26                  |       Cr17                            |       -
                movei           #LSP_DSP_PAULA_AUD3DAT,R28                      ; 4 octets actuels                                                                                                                                                                                      | Rword1                                |       Cr26                            |       Wr17
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr26
                not                     R22                                                                     ; => %11                                                                                                                                                                                                        | Rr22                                  |       -                                       |       word2word1 > Wr28
                load            (R28),R21                                                       ; R21 = octets actuels en stock                                                                                                                                                         | Rr28                                  |       Cr22                            |       -
                and                     R22,R25                                                         ; R25 = position octet � lire                                                                                                                                                           | Rr22                                  |       Mr28                            |       Wr22
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr25                            |       Wr21
                                                                                                                                                                                                                                                                                                                                        | -                                             |       -                                       |       Wr25
                cmp                     R17,R26                                                                                                                                                                                                                                                                                 | Rr17  & Rr26                  |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       -
                jr                      eq,DSP_LSP_routine_interruption_I2S_pas_nouveau_long_word3                                                                                                                                                                              | Rflags                                |       -                                       |       Wflags
                nop                                                                                                                                                                                                                                                                                                                     | -                                             |       ? > WPC                         |       -
; il faut rafraichir R21
                load            (R26),R21                                                       ; lit 4 nouveaux octets de sample                                                                                                                                                       | Rr26                                  |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr26                            |       -
                store           R21,(R28)                                                       ; rafraichit le stockage des 4 octets                                                                                                                                           | Rr21  & Rr28                  |       -                                       |       Wr21

DSP_LSP_routine_interruption_I2S_pas_nouveau_long_word3:
                shlq            #3,R25                                  ; numero d'octet � lire * 8                                                                                                                                                                                             | Rr25                                  |       Mr28                            |       -
                movei           #LSP_DSP_PAULA_AUD3VOL,R23                                                                                                                                                                                                                                              | Rword1                                |       Cr25                            |       Mwrite
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr25
                neg                     R25                                                                     ; -0 -8 -16 -24                                                                                                                                                                                         | Rr25                                  |       -                                       |       word2word1 > Wr23
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr25                            |       -
; R25=numero d'octet � lire
                sh                      R25,R21                                                         ; shift les 4 octets en stock vers la gauche, pour positionner l'octet � lire en haut                                           | Rr25  & Rr21                  |       -                                       |       Wr25
                load            (R23),R23                                                       ; R23 = volume : 6 bits                                                                                                                                                                         | Rr23                                  |       Cr21                            |       -
                shrq            #24,R21                                                         ; descends l'octet � lire                                                                                                                                                                       | Rr21                                  |       Mr23                            |       Wr21
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr21                            |       Wr23
                mult            R23,R21                                                         ; unsigned multiplication : unsigned sample * volume => 8bits + 6 bits = 14 bits                                                        | Rr23  & Rr21                  |       -                                       |       Wr21

; R21=sample channel 3 on 14 bits

; channel 2
                movei           #LSP_DSP_PAULA_internal_location2,R28                                           ; adresse sample actuelle, a virgule                                                                                            | Rword1                                |       Cr21                            |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr21
                movei           #LSP_DSP_PAULA_internal_increment2,R27                                                                                                                                                                                                                  | Rword1                                |       -                                       |       word2word1 > Wr28
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
                load            (R28),R26                                                                               ; R26=current pointeur sample 16:16                                                                                                                             | Rr28                                  |       -                                       |       word2word1 > Wr27
                load            (R27),R27                                                                               ; R27=increment 16:16                                                                                                                                                   | Rr27                                  |       Mr28                            |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr27                            |       Wr26
                move            R26,R17                                                                                 ; R17 = pointeur sample a virgule avant increment                                                                                               | Rr26                                  |       -                                       |       Wr27
                movei           #LSP_DSP_PAULA_internal_length2,R25                             ; =FIN                                                                                                                                                                                  | Rword1                                |       -                                       |       Wr17
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       -                                       |       word2word1 > Wr25
                add                     R27,R26                                                                                 ; R26=adresse+increment , a virgule                                                                                                                             | Rr27  & Rr26                  |       -                                       |       -
                load            (R25),R23                                                                                                                                                                                                                                                                               | Rr25                                  |       Cr26                            |       -
                movei           #$FFFFFFFC,R22                                                                                                                                                                                                                                                                  | Rword1                                |       Mr25                            |       Wr26
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr23
                                                                                                                                                                                                                                                                                                                                        | -                                             |       -                                       |       word2word1 > Wr22
                cmp                     R23,R26                                                                                                                                                                                                                                                                                 | Rr23  & Rr26                  |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       -
                jr                      mi,DSP_LSP_routine_interruption_I2S_pas_fin_de_sample_channel2                                                                                                                                                                  | Rflags                                |       -                                       |       Wflags
                nop                                                                                                                                                                                                                                                                                                                     | -                                             |       ? > WPC                         |       -
; fin de sample => on recharge les infos des registres externes
                shlq            #32-nb_bits_virgule_offset,R26                                                                                                                                                                                                                                  | Rr26                                  |       -                                       |       -
                movei           #LSP_DSP_PAULA_AUD2LEN,R27                      ; fin, a virgule                                                                                                                                                                                        | Rword1                                |       Cr26                            |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr26
                shrq            #32-nb_bits_virgule_offset,R26          ; on ne garde que la virgule                                                                                                                                                            | Rr26                                  |       -                                       |       word2word1 > Wr27
                movei           #LSP_DSP_PAULA_AUD2L,R24                        ; sample location a virgule                                                                                                                                                                     | Rword1                                |       Cr26                            |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr26
                load            (R27),R27                                                                                                                                                                                                                                                                               | Rr27                                  |       -                                       |       word2word1 > Wr24
                load            (R24),R23                                                                                                                                                                                                                                                                               | Rr24                                  |       Mr27                            |       -
                store           R27,(R25)                                                       ; update internal sample end, a virgule                                                                                                                                         | Rr27                                  |       Mr24                            |       Wr27
                or                      R23,R26                                                         ; on garde la virgule en cours                                                                                                                                                          | Rr23  & Rr26                  |       Mr25                            |       Wr23
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr26                            |       MWrite
DSP_LSP_routine_interruption_I2S_pas_fin_de_sample_channel2:
                store           R26,(R28)                                                       ; stocke internal sample pointeur, a virgule                                                                                                                            | Rr26  & Rr28                  |       -                                       |       Wr26
                shrq            #nb_bits_virgule_offset,R26                                                             ; nouveau pointeur adresse sample partie entiere                                                                                | Rr26                                  |       Mr28                            |       -
                shrq            #nb_bits_virgule_offset,R17                                                             ; ancien pointeur adresse sample partie entiere                                                                                 | Rr17                                  |       Cr26                            |       MWrite
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr17                            |       Wr26
                move            R26,R25                                                         ; R25 = nouveau pointeur sample                                                                                                                                                         | Rr26                                  |       -                                       |       Wr17
                                                                                                                                                                                                                                                                                                                                        | -                                             |       -                                       |       Wr25
                and                     R22,R17                                                         ; ancien pointeur sample modulo 4                                                                                                                                                       | Rr22  & Rr17                  |       -                                       |       -
                and                     R22,R26                                                         ; nouveau pointeur sample modulo 4                                                                                                                                                      | Rr22  & Rr26                  |       Cr17                            |       -
                movei           #LSP_DSP_PAULA_AUD2DAT,R28                      ; 4 octets actuels                                                                                                                                                                                      | Rword1                                |       Cr26                            |       Wr17
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr26
                not                     R22                                                                     ; => %11                                                                                                                                                                                                        | Rr22                                  |       -                                       |       word2word1 > Wr28
                load            (R28),R20                                                       ; R20 = octets actuels en stock                                                                                                                                                         | Rr28                                  |       Cr22                            |       -
                and                     R22,R25                                                         ; R25 = position octet � lire                                                                                                                                                           | Rr22  & Rr25                  |       Mr28                            |       Wr22
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr25                            |       Wr20
                                                                                                                                                                                                                                                                                                                                        | -                                             |       -                                       |       Wr25
                cmp                     R17,R26                                                                                                                                                                                                                                                                                 | Rr17  & Rr26                  |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       -
                jr                      eq,DSP_LSP_routine_interruption_I2S_pas_nouveau_long_word2                                                                                                                                                                              | Rflags                                |       -                                       |       Wflags
                nop                                                                                                                                                                                                                                                                                                                     | -                                             |       ? > WPC                         |       -
; il faut rafraichir R20
                load            (R26),R20                                                       ; lit 4 nouveaux octets de sample                                                                                                                                                       | Rr26                                  |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr26                            |       -
                store           R20,(R28)                                                       ; rafraichit le stockage des 4 octets                                                                                                                                           | Rr20  & Rr28                  |       -                                       |       Wr20

DSP_LSP_routine_interruption_I2S_pas_nouveau_long_word2:
                shlq            #3,R25                                  ; numero d'octet � lire * 8                                                                                                                                                                                             | Rr25                                  |       Mr28                            |       -
                movei           #LSP_DSP_PAULA_AUD2VOL,R23                                                                                                                                                                                                                                              | Rword1                                |       Cr25                            |       MWrite
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr25
                neg                     R25                                                                     ; -0 -8 -16 -24                                                                                                                                                                                         | Rr25                                  |       -                                       |       word2word1 > Wr23
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr25                            |       -
; R25=numero d'octet � lire
                sh                      R25,R20                                                         ; shift les 4 octets en stock vers la gauche, pour positionner l'octet � lire en haut                                           | Rr25  & Rr20                  |       -                                       |       Wr25
                load            (R23),R23                                                       ; R23 = volume : 6 bits                                                                                                                                                                         | Rr23                                  |       Cr20                            |       -
                shrq            #24,R20                                                         ; descends l'octet � lire                                                                                                                                                                       | Rr20                                  |       Mr23                            |       Wr20
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr20                            |       Wr23
                mult            R23,R20                                                         ; unsigned multiplication : unsigned sample * volume => 8bits + 6 bits = 14 bits                                                        | Rr23  & Rr20                  |       -                                       |       Wr20

; R20=sample channel 2 on 14 bits

; channel 1
                movei           #LSP_DSP_PAULA_internal_location1,R28                                           ; adresse sample actuelle, a virgule                                                                                            | Rword1                                |       Cr20                            |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr20
                movei           #LSP_DSP_PAULA_internal_increment1,R27                                                                                                                                                                                                                  | Rword1                                |       -                                       |       word2word1 > Wr28
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
                load            (R28),R26                                                                               ; R26=current pointeur sample 16:16                                                                                                                             | Rr28                                  |       -                                       |       word2word1 > Wr27
                load            (R27),R27                                                                               ; R27=increment 16:16                                                                                                                                                   | Rr27                                  |       Mr28                            |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr27                            |       Wr26
                move            R26,R17                                                                                 ; R17 = pointeur sample a virgule avant increment                                                                                               | Rr26                                  |       -                                       |       Wr27
                movei           #LSP_DSP_PAULA_internal_length1,R25                             ; =FIN                                                                                                                                                                                  | Rword1                                |       -                                       |       Wr17
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       -                                       |       word2word1 > Wr25
                add                     R27,R26                                                                                 ; R26=adresse+increment , a virgule                                                                                                                             | Rr27  & Rr26                  |       -                                       |       -
                load            (R25),R23                                                                                                                                                                                                                                                                               | Rr25                                  |       Cr26                            |       -
                movei           #$FFFFFFFC,R22                                                                                                                                                                                                                                                                  | Rword1                                |       Mr25                            |       Wr26
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr23
                                                                                                                                                                                                                                                                                                                                        | -                                             |       -                                       |       word2word1 > Wr22
                cmp                     R23,R26                                                                                                                                                                                                                                                                                 | Rr23  & Rr26                  |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       -
                jr                      mi,DSP_LSP_routine_interruption_I2S_pas_fin_de_sample_channel1                                                                                                                                                                  | Rflags                                |       -                                       |       Wflags
                nop                                                                                                                                                                                                                                                                                                                     | -                                             |       ? > WPC                         |       -
; fin de sample => on recharge les infos des registres externes
                shlq            #32-nb_bits_virgule_offset,R26                                                                                                                                                                                                                                  | Rr26                                  |       -                                       |       -
                movei           #LSP_DSP_PAULA_AUD1LEN,R27                      ; fin, a virgule                                                                                                                                                                                        | Rword1                                |       Cr26                            |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr26
                shrq            #32-nb_bits_virgule_offset,R26          ; on ne garde que la virgule                                                                                                                                                            | Rr26                                  |       -                                       |       word2word1 > Wr27
                movei           #LSP_DSP_PAULA_AUD1L,R24                        ; sample location a virgule                                                                                                                                                                     | Rword1                                |       Cr26                            |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr26
                load            (R27),R27                                                                                                                                                                                                                                                                               | Rr27                                  |       -                                       |       word2word1 > Wr24
                load            (R24),R23                                                                                                                                                                                                                                                                               | Rr24                                  |       Mr27                            |       -
                store           R27,(R25)                                                       ; update internal sample end, a virgule                                                                                                                                         | Rr27  & Rr25                  |       Mr23                            |       Wr27
                or                      R23,R26                                                         ; on garde la virgule en cours                                                                                                                                                          | Rr22  & Rr26                  |       Mr25                            |       Wr23
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr26                            |       MWrite
               
DSP_LSP_routine_interruption_I2S_pas_fin_de_sample_channel1:
                store           R26,(R28)                                                       ; stocke internal sample pointeur, a virgule                                                                                                                            | Rr26  & Rr28                  |       -                                       |       Wr26
                shrq            #nb_bits_virgule_offset,R26                                                             ; nouveau pointeur adresse sample partie entiere                                                                                | Rr26                                  |       Mr28                            |       -
                shrq            #nb_bits_virgule_offset,R17                                                             ; ancien pointeur adresse sample partie entiere                                                                                 | Rr17                                  |       Cr26                            |       MWrite
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr17                            |       Wr26
                move            R26,R25                                                         ; R25 = nouveau pointeur sample                                                                                                                                                         | Rr26                                  |       -                                       |       Wr17
                                                                                                                                                                                                                                                                                                                                        | -                                             |       -                                       |       Wr25
                and                     R22,R17                                                         ; ancien pointeur sample modulo 4                                                                                                                                                       | Rr22  & Rr17                  |       -                                       |       -
                and                     R22,R26                                                         ; nouveau pointeur sample modulo 4                                                                                                                                                      | Rr22  & Rr26                  |       Cr17                            |       -
                movei           #LSP_DSP_PAULA_AUD1DAT,R28                      ; 4 octets actuels                                                                                                                                                                                      | Rword1                                |       Cr26                            |       Wr17
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr26
                not                     R22                                                                     ; => %11                                                                                                                                                                                                        | Rr22                                  |       -                                       |       word2word1 > Wr28
                load            (R28),R19                                                       ; R19 = octets actuels en stock                                                                                                                                                         | Rr28                                  |       Cr22                            |       -
                and                     R22,R25                                                         ; R25 = position octet � lire                                                                                                                                                           | Rr22  & Rr25                  |       Mr28                            |       Wr22
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr25                            |       Wr19
                                                                                                                                                                                                                                                                                                                                        | -                                             |       -                                       |       Wr25
                cmp                     R17,R26                                                                                                                                                                                                                                                                                 | Rr17  & Rr26                  |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       -
                jr                      eq,DSP_LSP_routine_interruption_I2S_pas_nouveau_long_word1                                                                                                                                                                              | Rflags                                |       -                                       |       Wflags
                nop                                                                                                                                                                                                                                                                                                                     | -                                             |       ? > WPC                         |       -
; il faut rafraichir R19
                load            (R26),R19                                                       ; lit 4 nouveaux octets de sample                                                                                                                                                       | Rr26                                  |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr26                            |       -
                store           R19,(R28)                                                       ; rafraichit le stockage des 4 octets                                                                                                                                           | Rr19  & Rr28                  |       -                                       |       Wr19

DSP_LSP_routine_interruption_I2S_pas_nouveau_long_word1:
                shlq            #3,R25                                  ; numero d'octet � lire * 8                                                                                                                                                                                             | Rr25                                  |       Mr28                            |       -
                movei           #LSP_DSP_PAULA_AUD1VOL,R23                                                                                                                                                                                                                                              | Rword1                                |       Cr25                            |       Mwrite
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr25
                neg                     R25                                                                     ; -0 -8 -16 -24                                                                                                                                                                                         | Rr25                                  |       -                                       |       word2word1 > Wr23
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr25                            |       -
; R25=numero d'octet � lire
                sh                      R25,R19                                                         ; shift les 4 octets en stock vers la gauche, pour positionner l'octet � lire en haut                                           | Rr25  & Rr19                  |       -                                       |       Wr25
                load            (R23),R23                                                       ; R23 = volume : 6 bits                                                                                                                                                                         | Rr23                                  |       Cr19                            |       -
                shrq            #24,R19                                                         ; descends l'octet � lire                                                                                                                                                                       | Rr19                                  |       Mr23                            |       Wr19
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr19                            |       Wr23
                mult            R23,R19                                                         ; unsigned multiplication : unsigned sample * volume => 8bits + 6 bits = 14 bits                                                        | Rr23  & Rr19                  |       -                                       |       Wr19
               
; R19=sample channel 1 on 14 bits

; channel 0
                movei           #LSP_DSP_PAULA_internal_location0,R28                                           ; adresse sample actuelle, a virgule                                                                                            | Rword1                                |       Cr19                            |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr19
                movei           #LSP_DSP_PAULA_internal_increment0,R27                                                                                                                                                                                                                  | Rword1                                |       -                                       |       word2word1 > Wr28
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
                load            (R28),R26                                                                               ; R26=current pointeur sample 16:16                                                                                                                             | Rr28                                  |       -                                       |       word2word1 > Wr27
                load            (R27),R27                                                                               ; R27=increment 16:16                                                                                                                                                   | Rr27                                  |       Mr28                            |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr27                            |       Wr26
                move            R26,R17                                                                                 ; R17 = pointeur sample a virgule avant increment                                                                                               | Rr26                                  |       -                                       |       Wr27
                movei           #LSP_DSP_PAULA_internal_length0,R25                             ; =FIN                                                                                                                                                                                  | Rword1                                |       -                                       |       Wr17
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       -                                       |       word2word1 > Wr25
                add                     R27,R26                                                                                 ; R26=adresse+increment , a virgule                                                                                                                             | Rr27  & Rr26                  |       -                                       |       -
                load            (R25),R23                                                                                                                                                                                                                                                                               | Rr25                                  |       Cr26                            |       -
                movei           #$FFFFFFFC,R22                                                                                                                                                                                                                                                                  | Rword1                                |       Mr25                            |       Wr26
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr23
                                                                                                                                                                                                                                                                                                                                        | -                                             |       -                                       |       word2word1 > Wr22
                cmp                     R23,R26                                                                                                                                                                                                                                                                                 | Rr23  & Rr26                  |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       -
                jr                      mi,DSP_LSP_routine_interruption_I2S_pas_fin_de_sample_channel0                                                                                                                                                                  | Rflags                                |       -                                       |       Wflags
                nop                                                                                                                                                                                                                                                                                                                     | -                                             |       ? > WPC                         |       -
; fin de sample => on recharge les infos des registres externes
                shlq            #32-nb_bits_virgule_offset,R26                                                                                                                                                                                                                                  | Rr26                                  |       -                                       |       -
                movei           #LSP_DSP_PAULA_AUD0LEN,R27                      ; fin, a virgule                                                                                                                                                                                        | Rword1                                |       Cr26                            |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr26
                shrq            #32-nb_bits_virgule_offset,R26          ; on ne garde que la virgule                                                                                                                                                            | Rr26                                  |       -                                       |       word2word1 > Wr27
                movei           #LSP_DSP_PAULA_AUD0L,R24                        ; sample location a virgule                                                                                                                                                                     | Rword1                                |       Cr26                            |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr26
                load            (R27),R27                                                                                                                                                                                                                                                                               | Rr27                                  |       -                                       |       word2word1 > Wr24
                load            (R24),R23                                                                                                                                                                                                                                                                               | Rr24                                  |       Mr27                            |       -
                store           R27,(R25)                                                       ; update internal sample end, a virgule                                                                                                                                         | Rr27  & Rr25                  |       Mr24                            |       Wr27
                or                      R23,R26                                                         ; on garde la virgule en cours                                                                                                                                                          | Rr23  & Rr26                  |       Mr25                            |       Wr23
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr26                            |       Mwrite
DSP_LSP_routine_interruption_I2S_pas_fin_de_sample_channel0:
                store           R26,(R28)                                                       ; stocke internal sample pointeur, a virgule                                                                                                                            | Rr26  & Rr28                  |       -                                       |       Wr26
                shrq            #nb_bits_virgule_offset,R26                                                             ; nouveau pointeur adresse sample partie entiere                                                                                | Rr26                                  |       Mr28                            |       -
                shrq            #nb_bits_virgule_offset,R17                                                             ; ancien pointeur adresse sample partie entiere                                                                                 | Rr17                                  |       Cr26                            |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr17                            |       Wr26
                move            R26,R25                                                         ; R25 = nouveau pointeur sample                                                                                                                                                         | Rr26                                  |       -                                       |       Wr17
                                                                                                                                                                                                                                                                                                                                        | -                                             |       -                                       |       Wr25
                and                     R22,R17                                                         ; ancien pointeur sample modulo 4                                                                                                                                                       | Rr22  & Rr17                  |       -                                       |       -
                and                     R22,R26                                                         ; nouveau pointeur sample modulo 4                                                                                                                                                      | Rr22  & Rr26                  |       Cr17                            |       -
                movei           #LSP_DSP_PAULA_AUD0DAT,R28                      ; 4 octets actuels                                                                                                                                                                                      | Rword1                                |       Cr26                            |       Wr17
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr26
                not                     R22                                                                     ; => %11                                                                                                                                                                                                        | Rr22                                  |       -                                       |       word2word1 > Wr28
                load            (R28),R18                                                       ; R18 = octets actuels en stock channel 0                                                                                                                                       | Rr28                                  |       Cr22                            |       -
                and                     R22,R25                                                         ; R25 = position octet � lire                                                                                                                                                           | Rr22  & Rr25                  |       Mr28                            |       Wr22
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr25                            |       Wr18
                                                                                                                                                                                                                                                                                                                                        | -                                             |       -                                       |       Wr25
                cmp                     R17,R26                                                                                                                                                                                                                                                                                 | Rr17  & Rr26                  |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       -
                jr                      eq,DSP_LSP_routine_interruption_I2S_pas_nouveau_long_word0                                                                                                                                                                              | Rflags                                |       -                                       |       Wflags
                nop                                                                                                                                                                                                                                                                                                                     | -                                             |       ? > WPC                         |       -
; il faut rafraichir R18
                load            (R26),R18                                                       ; lit 4 nouveaux octets de sample                                                                                                                                                       | Rr26                                  |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr26                            |       -
                store           R18,(R28)                                                       ; rafraichit le stockage des 4 octets                                                                                                                                           | Rr18  & Rr28                  |       -                                       |       Wr18

DSP_LSP_routine_interruption_I2S_pas_nouveau_long_word0:
                shlq            #3,R25                                  ; numero d'octet � lire * 8                                                                                                                                                                                             | Rr25                                  |       Mr28                            |       -
                movei           #LSP_DSP_PAULA_AUD0VOL,R23                                                                                                                                                                                                                                              | Rword1                                |       Cr25                            |       MWrite
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr25
                neg                     R25                                                                     ; -0 -8 -16 -24                                                                                                                                                                                         | Rr25                                  |       -                                       |       word2word1 > Wr23
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr25                            |       -
; R25=numero d'octet � lire
                sh                      R25,R18                                                         ; shift les 4 octets en stock vers la gauche, pour positionner l'octet � lire en haut                                           | Rr25  & Rr18                  |       -                                       |       Wr25
                load            (R23),R23                                                       ; R23 = volume : 6 bits                                                                                                                                                                         | Rr23                                  |       Cr18                            |       -
                shrq            #24,R18                                                         ; descends l'octet � lire                                                                                                                                                                       | Rr18                                  |       Mr23                            |       Wr18
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr18                            |       Wr23
                mult            R23,R18                                                         ; unsigned multiplication : unsigned sample * volume => 8bits + 6 bits = 14 bits                                                        | Rr23  & Rr18                  |       -                                       |       Wr18
               
; R18=sample channel 0 on 14 bits



; St�reo Amiga:
; les canaux 0 et 3 formant la voie st�r�o gauche et 1 et 2 la voie st�r�o droite
; R18=channel 0
; R19=channel 1
; R20=channel 2
; R21=channel 3
                .if                     channel_1=0
                        moveq   #0,R18
                .endif
                .if                     channel_2=0
                        moveq   #0,R19
                .endif
                .if                     channel_3=0
                        moveq   #0,R20
                .endif
                .if                     channel_4=0
                        moveq   #0,R21
                .endif

                movei           #$8000,R26                                                                                                                                                                                                                                                                              | Rword1                                |       Cr18                            |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr18
                                                                                                                                                                                                                                                                                                                                        | -                                             |       -                                       |       word2word1 > Wr26
                add                     R21,R18                         ; R18 = left 15 bits unsigned                                                                                                                                                                                           | Rr21  & Rr18                  |       -                                       |       -
                movei           #L_I2S,R27                                                                                                                                                                                                                                                                              | Rword1                                |       Cr18                            |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr18
                                                                                                                                                                                                                                                                                                                                        | -                                             |       -                                       |       word2word1 > Wr27
                add                     R20,R19                         ; R19 = right 15 bits unsigned                                                                                                                                                                                          | Rr20  & Rr19                  |       -                                       |       -
                shlq            #1,R18                          ; 16 bits unsigned                                                                                                                                                                                                                      | Rr18                                  |       Cr19                            |       -
                shlq            #1,R19                                                                                                                                                                                                                                                                                  | Rr19                                  |       Cr18                            |       Wr19
                sub                     R26,R18                         ; 16 bits signed                                                                                                                                                                                                                        | Rr26  & Rr18                  |       Cr19                            |       Wr18
                movei           #L_I2S+4,R25                                                                                                                                                                                                                                                                    | Rword1                                |       Cr18                            |       Wr19
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr18
                                                                                                                                                                                                                                                                                                                                        | -                                             |       -                                       |       word2word1 > Wr25
                sub                     R26,R19                                                                                                                                                                                                                                                                                 | Rr26  & Rr19                  |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr19                            |       -
                store           R19,(R27)                       ; write right channel                                                                                                                                                                                                           | Rr19  & Rr27                  |       -                                       |       Wr19
                store           R18,(R25)                       ; write left channel                                                                                                                                                                                                            | Rr18  & Rr25                  |       Mr27                            |       -

               

        .if             DSP_DEBUG
; change la couleur du fond
        movei   #$000,R26
        movei   #BG,r27
        storew  r26,(r27)
        .endif


;------------------------------------  
; return from interrupt I2S
        load    (r31),r28       ; return address                                                                                                                                                                                                                                                        | Rr31                                  |       Mr25                            |       MWrite
        bset    #10,r29         ; clear latch 1 = I2S                                                                                                                                                                                                                                           | Rr29                                  |       Mr31                            |       MWrite
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr29                            |       Wr28
        ;bset   #11,r29         ; clear latch 1 = timer 1
        ;bset   #12,r29         ; clear latch 1 = timer 2
        bclr    #3,r29          ; clear IMASK                                                                                                                                                                                                                                                           | Rr29                                  |       -                                       |       Wr29
        addq    #4,r31          ; pop from stack                                                                                                                                                                                                                                                        | Rr31                                  |       Cr29                            |       -
        addqt   #2,r28          ; next instruction                                                                                                                                                                                                                                                      | Rr28                                  |       Cr31                            |       Wr29
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr28                            |       Wr31
        jump    t,(r28)         ; return                                                                                                                                                                                                                                                                        | Rr28                                  |       -                                       |       Wr28
        store   r29,(r30)       ; restore flags                                                                                                                                                                                                                                                         | Rr29          & Rr30          |       ? > WPC                         |       -


;--------------------------------------------
; ---------------- Timer 1 ------------------
;--------------------------------------------
; autorise interruptions, pour timer I2S
;
; registres utilis�s :
;               R13/R16   /R31
;               R0/R1/R2/R3/R4/R5/R6/R7/R8/R9  R12/R14


DSP_LSP_routine_interruption_Timer1:
        .if             I2S_during_Timer1=1
        bclr    #3,r13          ; clear IMASK
        store   r13,(r16)       ; restore flags
        .endif

; gestion replay LSP

        movei           #LSPVars,R14                                                                                                                                                                                                                                                                            | Rword1                                |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        load            (R14),R0                                        ; R0 = byte stream                                                                                                                                                                                                              | Rr14                                  |       -                                       |       word2word1 > Wr14
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr14                            |       -
DSP_LSP_Timer1_process:
        moveq           #0,R2                                                                                                                                                                                                                                                                                           | #0                                    |       -                                       |       Wr0
DSP_LSP_Timer1_cloop:

        loadb           (R0),R6                                         ; R6 = byte code                                                                                                                                                                                                                | Rr0                                   |       -                                       |       Wr2
        addq            #1,R0                                                                                                                                                                                                                                                                                           | Rr0                                   |       Mr0                                     |       -
       
        cmpq            #0,R6                                                                                                                                                                                                                                                                                           | Rr6                                   |       -                                       |       Wr6
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       -
        jr                      ne,DSP_LSP_Timer1_swCode                                                                                                                                                                                                                                                        | Rflags                                |       -                                       |       Wflags
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       ? > WPC                         |       -
        movei           #$0100,R3                                                                                                                                                                                                                                                                                       | Rword1                                |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        add                     R3,R2                                                                                                                                                                                                                                                                                           | Rr3   & Rr2                   |       -                                       |       word2word1 > Wr3
        jr                      DSP_LSP_Timer1_cloop                                                                                                                                                                                                                                                            | -                                             |       Cr2                                     |       -
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       WPC                                     |       -

DSP_LSP_Timer1_swCode:
        add                     R2,R6                                                                                                                                                                                                                                                                                           | Rr2   & Rr6                   |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr6                                     |       -
        move            R6,R2                                                                                                                                                                                                                                                                                           | Rr6                                   |       -                                       |       Wr6

        add                     R2,R2                                                                                                                                                                                                                                                                                           | Rr2                                   |       -                                       |       Wr2
        load            (R14+2),R3                      ; R3=code table / m_codeTableAddr                                                                                                                                                                                               | Rr14                                  |       Cr2                                     |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr14+2                          |       Wr2
                                                                                                                                                                                                                                                                                                                                        | -                                             |                       Mr14+2          |       -
        add                     R2,R3                                                                                                                                                                                                                                                                                           | Rr2   & Rr3                   |       -                                       |       Wr3
        movei           #DSP_LSP_Timer1_noInst,R12                                                                                                                                                                                                                                                      | Rword1                                |       Cr3                                     |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        loadw           (R3),R2                                                                 ; R2 = code                                                                                                                                                                                                     | Rr3                                   |       -                                       |       word2word1 > Wr12
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr3                                     |       -
        cmpq            #0,R2                                                                                                                                                                                                                                                                                           | Rr2                                   |       -                                       |       Wr2
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       -
        jump            eq,(R12)                                                                                                                                                                                                                                                                                        | Rflags        & Rr12          |       -                                       |       Wflags
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       ? > WPC                         |       -
        load            (R14+3),R4                      ; R4=escape code rewind / m_escCodeRewind                                                                                                                                                                               | Rr14                                  |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr14+3                          |       -
        movei           #DSP_LSP_Timer1_r_rewind,R12                                                                                                                                                                                                                                            | Rword1                                |       -               Mr14+3          |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr4
                                                                                                                                                                                                                                                                                                                                        | -                                             |       -                                       |       word2word1 > Wr12
        cmp                     R4,R2                                                                                                                                                                                                                                                                                           | Rr4   & Rr2                   |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       -
        jump            eq,(R12)                                                                                                                                                                                                                                                                                        | Rflags        & Rr12          |       -                                       |       Wflags
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       ? > WPC                         |       -
        load            (R14+4),R4                      ; R4=escape code set bpm / m_escCodeSetBpm                                                                                                                                                                              | Rr14                                  |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr14+4                          |       -
        movei           #DSP_LSP_Timer1_r_chgbpm,R12                                                                                                                                                                                                                                            | Rword1                                |       -               Mr14+4          |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr4
                                                                                                                                                                                                                                                                                                                                        | -                                             |       -                                       |       word2word1 > Wr12
        cmp                     R4,R2                                                                                                                                                                                                                                                                                           | Rr4   & Rr2                   |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       -
        jump            eq,(R12)                                                                                                                                                                                                                                                                                        | Rflags        & Rr12          |       -                                       |       Wflags
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       ? > WPC                         |       -

;--------------------------
; gestion des volumes
;--------------------------
; test volume canal 3
        btst            #7,R2                                                                                                                                                                                                                                                                                           | Rr2                                   |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       -
        jr                      eq,DSP_LSP_Timer1_noVd                                                                                                                                                                                                                                                          | Rflags                                |       -                                       |       Wflags
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       ? > WPC                         |       -
        loadb           (R0),R4                                                                                                                                                                                                                                                                                         | Rr0                                   |       -                                       |       -
        movei           #LSP_DSP_PAULA_AUD3VOL,R5                                                                                                                                                                                                                                                       | Rword1                                |       Mr0                                     |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr4
        addq            #1,R0                                                                                                                                                                                                                                                                                           | Rr0                                   |       -                                       |       word2word1 > Wr5
        store           R4,(R5)                                                                                                                                                                                                                                                                                         | Rr4   & Rr5                   |       Cr0                                     |       -
DSP_LSP_Timer1_noVd:
; test volume canal 2
        btst            #6,R2                                                                                                                                                                                                                                                                                           | Rr2                                   |       Mr5                                     |       Wr0
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       MWrite
        jr                      eq,DSP_LSP_Timer1_noVc                                                                                                                                                                                                                                                          | Rflags                                |       -                                       |       Wflags
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       ? > WPC                         |       -
        loadb           (R0),R4                                                                                                                                                                                                                                                                                         | Rr0                                   |       -                                       |       -
        movei           #LSP_DSP_PAULA_AUD2VOL,R5                                                                                                                                                                                                                                                       | Rword1                                |       Mr0                                     |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr4
        addq            #1,R0                                                                                                                                                                                                                                                                                           | Rr0                                   |       -                                       |       word2word1 > Wr5
        store           R4,(R5)                                                                                                                                                                                                                                                                                         | Rr4   & Rr5                   |       Cr0                                     |       -
DSP_LSP_Timer1_noVc:
; test volume canal 1
        btst            #5,R2                                                                                                                                                                                                                                                                                           | Rr2                                   |       Mr5                                     |       Wr0
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       MWrite
        jr                      eq,DSP_LSP_Timer1_noVb                                                                                                                                                                                                                                                          | Rflags                                |       -                                       |       Wflags
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       ? > WPC                         |       -
        loadb           (R0),R4                                                                                                                                                                                                                                                                                         | Rr0                                   |       -                                       |       -
        movei           #LSP_DSP_PAULA_AUD1VOL,R5                                                                                                                                                                                                                                                       | Rword1                                |       Mr0                                     |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr4
        addq            #1,R0                                                                                                                                                                                                                                                                                           | Rr0                                   |       -                                       |       word2word1 > Wr5
        store           R4,(R5)                                                                                                                                                                                                                                                                                         | Rr4   & Rr5                   |       Cr0                                     |       -
DSP_LSP_Timer1_noVb:
; test volume canal 0
        btst            #4,R2                                                                                                                                                                                                                                                                                           | Rr2                                   |       Mr5                                     |       Wr0
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       MWrite
        jr                      eq,DSP_LSP_Timer1_noVa                                                                                                                                                                                                                                                          | Rflags                                |       -                                       |       Wflags
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       ? > WPC                         |       -
        loadb           (R0),R4                                                                                                                                                                                                                                                                                         | Rr0                                   |       -                                       |       -
        movei           #LSP_DSP_PAULA_AUD0VOL,R5                                                                                                                                                                                                                                                       | Rword1                                |       Mr0                                     |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr4
        addq            #1,R0                                                                                                                                                                                                                                                                                           | Rr0                                   |       -                                       |       word2word1 > Wr5
        store           R4,(R5)                                                                                                                                                                                                                                                                                         | Rr4   & Rr5                   |       Cr0                                     |       -
DSP_LSP_Timer1_noVa:

        .if                     LSP_avancer_module=1
        store           R0,(R14)                                                                        ; store byte stream ptr                                                                                                                                                                 | Rr0   & Rr14                  |       Mr5                                     |       Wr0
        .endif
        addq            #4,R14                                                                  ; avance a word stream ptr                                                                                                                                                                      | Rr14                                  |       Mr14                            |       Mwrite
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr14                            |       Mwrite
        load            (R14),R0                                                                        ; R0 = word stream                                                                                                                                                                              | Rr14                                  |       -                                       |       Wr14

;--------------------------
; gestion des notes
;--------------------------
; test period canal 3
        btst            #3,R2                                                                                                                                                                                                                                                                                           | Rr2                                   |       Mr14                            |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       Wr0
        jr                      eq,DSP_LSP_Timer1_noPd                                                                                                                                                                                                                                                          | Rflags                                |       -                                       |       Wflags
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       ? > WPC                         |       -
        loadw           (R0),R4                                                                                                                                                                                                                                                                                         | Rr0                                   |       -                                       |       -
        movei           #LSP_DSP_PAULA_AUD3PER,R5                                                                                                                                                                                                                                                       | Rword1                                |       Mr0                                     |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr4
        addq            #2,R0                                                                                                                                                                                                                                                                                           | Rr0                                   |       -                                       |       word2word1 > Wr5
        store           R4,(R5)                                                                                                                                                                                                                                                                                         | Rr4   & Rr5                   |       Cr0                                     |       -
DSP_LSP_Timer1_noPd:
; test period canal 2
        btst            #2,R2                                                                                                                                                                                                                                                                                           | Rr2                                   |       Mr5                                     |       Wr0
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       MWrite
        jr                      eq,DSP_LSP_Timer1_noPc                                                                                                                                                                                                                                                          | Rflags                                |       -                                       |       Wflags
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       ? > WPC                         |       -
        loadw           (R0),R4                                                                                                                                                                                                                                                                                         | Rr0                                   |       -                                       |       -
        movei           #LSP_DSP_PAULA_AUD2PER,R5                                                                                                                                                                                                                                                       | Rword1                                |       Mr0                                     |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr4
        addq            #2,R0                                                                                                                                                                                                                                                                                           | Rr0                                   |       -                                       |       word2word1 > Wr5
        store           R4,(R5)                                                                                                                                                                                                                                                                                         | Rr4   & Rr5                   |       Cr0                                     |       -
DSP_LSP_Timer1_noPc:
; test period canal 1
        btst            #1,R2                                                                                                                                                                                                                                                                                           | Rr2                                   |       Mr5                                     |       Wr0
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       Mwrite
        jr                      eq,DSP_LSP_Timer1_noPb                                                                                                                                                                                                                                                          | Rflags                                |       -                                       |       Wflags
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       ? > WPC                         |       -
        loadw           (R0),R4                                                                                                                                                                                                                                                                                         | Rr0                                   |       -                                       |       -
        movei           #LSP_DSP_PAULA_AUD1PER,R5                                                                                                                                                                                                                                                       | Rword1                                |       Mr0                                     |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr4
        addq            #2,R0                                                                                                                                                                                                                                                                                           | Rr0                                   |       -                                       |       word2word1 > Wr5
        store           R4,(R5)                                                                                                                                                                                                                                                                                         | Rr4   & Rr5                   |       Cr0                                     |       -
DSP_LSP_Timer1_noPb:
; test period canal 0
        btst            #0,R2                                                                                                                                                                                                                                                                                           | Rr2                                   |       Mr5                                     |       Wr0
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       MWrite
        jr                      eq,DSP_LSP_Timer1_noPa                                                                                                                                                                                                                                                          | Rflags                                |       -                                       |       Wflags
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       ? > WPC                         |       -
        loadw           (R0),R4                                                                                                                                                                                                                                                                                         | Rr0                                   |       -                                       |       -
        movei           #LSP_DSP_PAULA_AUD0PER,R5                                                                                                                                                                                                                                                       | Rword1                                |       Mr0                                     |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr4
        addq            #2,R0                                                                                                                                                                                                                                                                                           | Rr0                                   |       -                                       |       word2word1 > Wr5
        store           R4,(R5)                                                                                                                                                                                                                                                                                         | Rr4   & Rr5                   |       Cr0                                     |       -
DSP_LSP_Timer1_noPa:

; pas de test des 8 bits du haut en entier pour zapper la lecture des instruments
; tst.w d0                                                      ; d0.w, avec d0.b qui a avanc� ! / beq.s        .noInst

        load            (R14+4),R5              ; R5= instrument table  ( =+$10)  = a2   / m_lspInstruments-1 = 5-1                                                                                                                                     | Rr14                                  |       Mr5                                     |       Wr0
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr14+4                          |       Mwrite

;--------------------------
; gestion des instruments
;--------------------------
;--- test instrument voie 3
        movei           #DSP_LSP_Timer1_setIns3,R12                                                                                                                                                                                                                                                     | Rword1                                |       -               Mr14+4          |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr5
        btst            #15,R2                                                                                                                                                                                                                                                                                          | Rr2                                   |       -                                       |       word2word1 > Wr12
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       -
        jump            ne,(R12)                                                                                                                                                                                                                                                                                        | Rflags                                |       -                                       |       Wflags
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       ? > WPC                         |       -
       
        movei           #DSP_LSP_Timer1_skip3,R12                                                                                                                                                                                                                                                       | Rword1                                |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        btst            #14,R2                                                                                                                                                                                                                                                                                          | Rr2                                   |       -                                       |       word2word1 > Wr12
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       -
        jump            eq,(R12)                                                                                                                                                                                                                                                                                        | Rflags                                |       -                                       |       Wflags
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       ? > WPC                         |       -

; repeat voie 3
        movei           #LSP_DSP_repeat_pointeur3,R3                                                                                                                                                                                                                                            | Rword1                                |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        movei           #LSP_DSP_repeat_length3,R4                                                                                                                                                                                                                                                      | Rword1                                |       -                                       |       word2word1 > Wr3
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        load            (R3),R3                                 ; pointeur sauvegard�, sur infos de repeats                                                                                                                                                                     | Rr3                                   |       -                                       |       word2word1 > Wr4
        load            (R4),R4                                                                                                                                                                                                                                                                                         | Rr4                                   |       Mr3                                     |       -
        movei           #LSP_DSP_PAULA_AUD3L,R7                                                                                                                                                                                                                                                         | Rword1                                |       Mr4                                     |       Wr3
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr4
        movei           #LSP_DSP_PAULA_AUD3LEN,R8                                                                                                                                                                                                                                                       | Rword1                                |       -                                       |       word2word1 > Wr7
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       -                                       |       word2word1 > Wr8
        store           R3,(R7)                                                                                                                                                                                                                                                                                         | Rr3   & Rr7                   |       -                                       |       -
        store           R4,(R8)                                 ; stocke le pointeur sample de repeat dans LSP_DSP_PAULA_AUD3L                                                                                                                          | Rr4   & Rr8                   |       Mr7                                     |       -
        jump            (R12)                           ; jump en DSP_LSP_Timer1_skip3                                                                                                                                                                                                  | Rr12                                  |       Mr8                                     |       MWrite
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       r12 > WPC                       |       MWrite

DSP_LSP_Timer1_setIns3:
        loadw           (R0),R3                         ; offset de l'instrument par rapport au precedent                                                                                                                                                               | Rr0                                   |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr0                                     |       -
; addition en .w
        btst            #15,R3                                                                                                                                                                                                                                                                                          | Rr3                                   |       -                                       |       Wr3
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       -
        jr                      eq,.positif3                                                                                                                                                                                                                                                                            | Rflags                                |       -                                       |       Wflags
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       ? > WPC                         |       -
        movei           #$FFFF0000,R7                                                                                                                                                                                                                                                                           | Rword1                                |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        or                      R7,R3                                                                                                                                                                                                                                                                                           | Rr7   & Rr3                   |       -                                       |       word2word1 > Wr7
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr3                                     |       -
.positif3:
        add                     R3,R5                           ;R5=pointeur datas instruments                                                                                                                                                                                                  | Rr3   & Rr5                   |       -                                       |       -
        addq            #2,R0                                                                                                                                                                                                                                                                                           | Rr0                                   |       Cr5                                     |       -


        movei           #LSP_DSP_PAULA_AUD3L,R7                                                                                                                                                                                                                                                         | Rword1                                |       Cr0                                     |       Wr5
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr0
        loadw           (R5),R6                                                                                                                                                                                                                                                                                         | Rr5                                   |       -                                       |       word2word1 > Wr7
        addq            #2,R5                                                                                                                                                                                                                                                                                           | Rr5                                   |       Mr5                                     |       -
        shlq            #16,R6                                                                                                                                                                                                                                                                                          | Rr6                                   |       Cr5                                     |       Wr6
        loadw           (R5),R8                                                                                                                                                                                                                                                                                         | Rr5                                   |       Cr6                                     |       Wr5
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr5                                     |       Wr6
        or                      R8,R6                                                                                                                                                                                                                                                                                           | Rr8   & Rr6                   |       -                                       |       Wr8
        movei           #LSP_DSP_PAULA_AUD3LEN,R8                                                                                                                                                                                                                                                       | Rword1                                |       Cr6                                     |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr6
        shlq            #nb_bits_virgule_offset,R6                                                                                                                                                                                                                                                      | Rr6                                   |       -                                       |       word2word1 > Wr8
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr6                                     |       -
        store           R6,(R7)                         ; stocke le pointeur sample a virgule dans LSP_DSP_PAULA_AUD3L                                                                                                                                  | Rr6   & Rr7                   |       -                                       |       Wr6
        addq            #2,R5                                                                                                                                                                                                                                                                                           | Rr5                                   |       Mr7                                     |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr5                                     |       MWrite
        loadw           (R5),R9                         ; .w = R9 = taille du sample                                                                                                                                                                                                    | Rr5                                   |       -                                       |       Wr5
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr5                                     |       -
        shlq            #nb_bits_virgule_offset,R9                              ; en 16:16                                                                                                                                                                                                      | Rr9                                   |       -                                       |       Wr9
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9                                     |       -
        add                     R6,R9                           ; taille devient fin du sample, a virgule                                                                                                                                                                               | Rr6   & Rr9                   |       -                                       |       Wr9
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9                                     |       -
        store           R9,(R8)                         ; stocke la nouvelle fin a virgule                                                                                                                                                                                              | Rr9   & Rr8                   |       -                                       |       Wr9
        addq            #2,R5                           ; positionne sur pointeur de repeat                                                                                                                                                                                             | Rr5                                   |       Mr8                                     |       -
; repeat pointeur
        movei           #LSP_DSP_repeat_pointeur3,R7                                                                                                                                                                                                                                            | Rword1                                |       Cr5                                     |       Mwrite
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr5
        loadw           (R5),R4                                                                                                                                                                                                                                                                                         | Rr5                                   |       -                                       |       word2word1 > Wr7
        addq            #2,R5                                                                                                                                                                                                                                                                                           | Rr5                                   |       Mr5                                     |       -
        shlq            #16,R4                                                                                                                                                                                                                                                                                          | Rr4                                   |       Cr5                                     |       Wr4
        loadw           (R5),R8                                                                                                                                                                                                                                                                                         | Rr5                                   |       Cr4                                     |       Wr5
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr5                                     |       Wr4
        or                      R8,R4                                                                                                                                                                                                                                                                                           | Rr8   & Rr4                   |       -                                       |       Wr8
        addq            #2,R5                                                                                                                                                                                                                                                                                           | Rr5                                   |       Cr4                                     |       -
        shlq            #nb_bits_virgule_offset,R4                                                                                                                                                                                                                                                      | Rr4                                   |       Cr5                                     |       Wr4
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4                                     |       Wr5
        store           R4,(R7)                         ; pointeur sample repeat, a virgule                                                                                                                                                                                             | Rr4   & Rr7                   |       -                                       |       Wr4
; repeat length
        movei           #LSP_DSP_repeat_length3,R7                                                                                                                                                                                                                                                      | Rword1                                |       Mr7                                     |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       MWrite
        loadw           (R5),R8                         ; .w = R8 = taille du sample                                                                                                                                                                                                    | Rr5                                   |       -                                       |       word2word1 > Wr7
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr5                                     |       -
        shlq            #nb_bits_virgule_offset,R8                              ; en 16:16                                                                                                                                                                                                      | Rr8                                   |       -                                       |       Wr8
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr8                                     |       -
        add                     R4,R8                                                                                                                                                                                                                                                                                           | Rr4   & Rr8                   |       -                                       |       Wr8
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr8                                     |       -
        store           R8,(R7)                         ; stocke la nouvelle taille                                                                                                                                                                                                             | Rr8   & Rr7                   |       -                                       |       Wr8
        subq            #4,R5                                                                                                                                                                                                                                                                                           | Rr5                                   |       Mr7                                     |       -
       
; test le reset pour prise en compte immediate du changement de sample
        movei           #DSP_LSP_Timer1_noreset3,R12                                                                                                                                                                                                                                            | Rword1                                |       Cr5                                     |       MWrite
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr5
        btst            #14,R2                                                                                                                                                                                                                                                                                          | Rr2                                   |       -                                       |       word2word1 > Wr12
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       -
        jump            eq,(R12)                                                                                                                                                                                                                                                                                        | Rflags        & Rr12          |       -                                       |       Wflags
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       ? > WPC                         |       -
; reset a travers le dmacon, il faut rafraichir : LSP_DSP_PAULA_internal_location3 & LSP_DSP_PAULA_internal_length3 & LSP_DSP_PAULA_internal_offset3=0
        movei           #LSP_DSP_PAULA_internal_location3,R7                                                                                                                                                                                                                            | Rword1                                |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        movei           #LSP_DSP_PAULA_internal_length3,R8                                                                                                                                                                                                                                      | Rword1                                |       -                                       |       word2word1 > Wr7
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       -                                       |       word2word1 > Wr8
        store           R6,(R7)                         ; stocke le pointeur sample dans LSP_DSP_PAULA_internal_location3                                                                                                                               | Rr6   & Rr7                   |       -                                       |       -
        store           R9,(R8)                         ; stocke la nouvelle taille en 16:16: dans LSP_DSP_PAULA_internal_length3                                                                                                               | Rr9   & Rr8                   |       Mr7                                     |       -
; remplace les 4 octets en stock
        move            R6,R12                                                                                                                                                                                                                                                                                          | Rr6                                   |       Mr8                                     |       MWrite
        shrq            #nb_bits_virgule_offset+2,R12   ; enleve la virgule  + 2 bits du bas                                                                                                                                                            | Rr12                                  |       -                                       |       Wr12    MWrite
        movei           #LSP_DSP_PAULA_AUD3DAT,R8                                                                                                                                                                                                                                                       | Rword1                                |       Cr12                            |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr12
        shlq            #2,R12                                                                                                                                                                                                                                                                                          | Rr12                                  |       -                                       |       word2word1 > Wr8
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr12                            |       -
        load            (R12),R7                                                                                                                                                                                                                                                                                        | Rr12                                  |       -                                       |       Wr12
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr12                            |       -
        store           R7,(R8)                                                                                                                                                                                                                                                                                         | Rr7   & Rr8                   |       -                                       |       Wr7
       

DSP_LSP_Timer1_noreset3:
DSP_LSP_Timer1_skip3:

;--- test instrument voie 2
        movei           #DSP_LSP_Timer1_setIns2,R12                                                                                                                                                                                                                                                     | Rword1                                |       Mr8                                     |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Mwrite
        btst            #13,R2                                                                                                                                                                                                                                                                                          | Rr2                                   |       -                                       |       word2word1 > Wr12
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       -
        jump            ne,(R12)                                                                                                                                                                                                                                                                                        | Rflags        & Rr12          |       -                                       |       Wflags
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       ? > WPC                         |       -
       
        movei           #DSP_LSP_Timer1_skip2,R12                                                                                                                                                                                                                                                       | Rword1                                |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        btst            #12,R2                                                                                                                                                                                                                                                                                          | Rr2                                   |       -                                       |       word2word1 > Wr12
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       -
        jump            eq,(R12)                                                                                                                                                                                                                                                                                        | Rflags                                |       -                                       |       Wflags
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       ? > WPC                         |       -

; repeat voie 2
        movei           #LSP_DSP_repeat_pointeur2,R3                                                                                                                                                                                                                                            | Rword1                                |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        movei           #LSP_DSP_repeat_length2,R4                                                                                                                                                                                                                                                      | Rword1                                |       -                                       |       word2word1 > Wr3
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        load            (R3),R3                                 ; pointeur sauvegard�, sur infos de repeats                                                                                                                                                                     | Rr3                                   |       -                                       |       word2word1 > Wr4
        load            (R4),R4                                                                                                                                                                                                                                                                                         | Rr4                                   |       Mr3                                     |       -
        movei           #LSP_DSP_PAULA_AUD2L,R7                                                                                                                                                                                                                                                         | Rword1                                |       Mr4                                     |       Wr3
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr4
        movei           #LSP_DSP_PAULA_AUD2LEN,R8                                                                                                                                                                                                                                                       | Rword1                                |       -                                       |       word2word1 > Wr7
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       -                                       |       word2word1 > Wr8
        store           R3,(R7)                                                                                                                                                                                                                                                                                         | Rr3   & Rr7                   |       -                                       |       -
        store           R4,(R8)                                 ; stocke le pointeur sample de repeat dans LSP_DSP_PAULA_AUD3L                                                                                                                          | Rr4   & Rr8                   |       Mr7                                     |       -
        jump            (R12)                           ; jump en DSP_LSP_Timer1_skip3                                                                                                                                                                                                  | Rr12                                  |       Mr8                                     |       Mwrite
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       WPC                                     |       Mwrite

DSP_LSP_Timer1_setIns2:
        loadw           (R0),R3                         ; offset de l'instrument par rapport au precedent                                                                                                                                                               | Rr0                                   |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr0                                     |       -
; addition en .w
        btst            #15,R3                                                                                                                                                                                                                                                                                          | Rr3                                   |       -                                       |       Wr3
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       -
        jr                      eq,.positif2                                                                                                                                                                                                                                                                            | Rflags                                |       -                                       |       Wflags
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       ? > WPC                         |       -
        movei           #$FFFF0000,R7                                                                                                                                                                                                                                                                           | Rword1                                |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        or                      R7,R3                                                                                                                                                                                                                                                                                           | Rr7   & Rr3                   |       -                                       |       word2word1 > Wr7
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr3                                     |       -
.positif2:
        add                     R3,R5                           ;R5=pointeur datas instruments                                                                                                                                                                                                  | Rr3   & Rr5                   |       -                                       |       Wr3
        addq            #2,R0                                                                                                                                                                                                                                                                                           | Rr0                                   |       Cr5                                     |       -


        movei           #LSP_DSP_PAULA_AUD2L,R7                                                                                                                                                                                                                                                         | Rword1                                |       Cr0                                     |       Wr5
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr0
        loadw           (R5),R6                                                                                                                                                                                                                                                                                         | Rr5                                   |       -                                       |       word2word1 > Wr7
        addq            #2,R5                                                                                                                                                                                                                                                                                           | Rr5                                   |       Mr5                                     |       -
        shlq            #16,R6                                                                                                                                                                                                                                                                                          | Rr6                                   |       Cr5                                     |       Wr6
        loadw           (R5),R8                                                                                                                                                                                                                                                                                         | Rr5                                   |       Cr6                                     |       Wr5
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr5                                     |       Wr6
        or                      R8,R6                                                                                                                                                                                                                                                                                           | Rr8   & Rr6                   |       -                                       |       Wr8
        movei           #LSP_DSP_PAULA_AUD2LEN,R8                                                                                                                                                                                                                                                       | Rword1                                |       Cr6                                     |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr6
        shlq            #nb_bits_virgule_offset,R6                                                                                                                                                                                                                                                      | Rr6                                   |       -                                       |       word2word1 > Wr8
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr6                                     |       -
        store           R6,(R7)                         ; stocke le pointeur sample a virgule dans LSP_DSP_PAULA_AUD3L                                                                                                                                  | Rr6   & Rr7                   |       -                                       |       Wr6
        addq            #2,R5                                                                                                                                                                                                                                                                                           | Rr5                                   |       Mr7                                     |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr5                                     |       Mwrite
        loadw           (R5),R9                         ; .w = R9 = taille du sample                                                                                                                                                                                                    | Rr5                                   |       -                                       |       Wr5
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr5                                     |       -
        shlq            #nb_bits_virgule_offset,R9                              ; en 16:16                                                                                                                                                                                                      | Rr9                                   |       -                                       |       Wr9
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9                                     |       -
        add                     R6,R9                           ; taille devient fin du sample, a virgule                                                                                                                                                                               | Rr6   & Rr9                   |       -                                       |       Wr9
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9                                     |       -
        store           R9,(R8)                         ; stocke la nouvelle fin a virgule                                                                                                                                                                                              | Rr9   & Rr8                   |       -                                       |       Wr9
        addq            #2,R5                           ; positionne sur pointeur de repeat                                                                                                                                                                                             | Rr5                                   |       Mr8                                     |       -
; repeat pointeur
        movei           #LSP_DSP_repeat_pointeur2,R7                                                                                                                                                                                                                                            | Rword1                                |       Cr5                                     |       Mwrite
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr5
        loadw           (R5),R4                                                                                                                                                                                                                                                                                         | Rr5                                   |       -                                       |       word2word1 > Wr7
        addq            #2,R5                                                                                                                                                                                                                                                                                           | Rr5                                   |       Mr5                                     |       -
        shlq            #16,R4                                                                                                                                                                                                                                                                                          | Rr4                                   |       Cr5                                     |       Wr4
        loadw           (R5),R8                                                                                                                                                                                                                                                                                         | Rr5                                   |       Cr4                                     |       Wr5
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr5                                     |       Wr4
        or                      R8,R4                                                                                                                                                                                                                                                                                           | Rr8   & Rr4                   |       -                                       |       Wr8
        addq            #2,R5                                                                                                                                                                                                                                                                                           | Rr5                                   |       Cr4                                     |       -
        shlq            #nb_bits_virgule_offset,R4                                                                                                                                                                                                                                                      | Rr4                                   |       Cr5                                     |       Wr4
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4                                     |       Wr5
        store           R4,(R7)                         ; pointeur sample repeat, a virgule                                                                                                                                                                                             | Rr4   & Rr7                   |       -                                       |       Wr4
; repeat length
        movei           #LSP_DSP_repeat_length2,R7                                                                                                                                                                                                                                                      | Rword1                                |       Mr7                                     |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Mwrite
        loadw           (R5),R8                         ; .w = R8 = taille du sample                                                                                                                                                                                                    | Rr5                                   |       -                                       |       word2word1 > Wr7
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr5                                     |       -
        shlq            #nb_bits_virgule_offset,R8                              ; en 16:16                                                                                                                                                                                                      | Rr8                                   |       -                                       |       Wr8
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr8                                     |       -
        add                     R4,R8                                                                                                                                                                                                                                                                                           | Rr4   & Rr8                   |       -                                       |       Wr8
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr8                                     |       -
        store           R8,(R7)                         ; stocke la nouvelle taille                                                                                                                                                                                                             | Rr8   & Rr7                   |       -                                       |       Wr8
        subq            #4,R5                                                                                                                                                                                                                                                                                           | Rr5                                   |       Mr7                                     |       -
       
; test le reset pour prise en compte immediate du changement de sample
        movei           #DSP_LSP_Timer1_noreset2,R12                                                                                                                                                                                                                                            | Rword1                                |       Cr5                                     |       Mwrite
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr5
        btst            #12,R2                                                                                                                                                                                                                                                                                          | Rr2                                   |       -                                       |       word2word1 > Wr12
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       -
        jump            eq,(R12)                                                                                                                                                                                                                                                                                        | Rflags                                |       -                                       |       Wflags
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       ? > WPC                         |       -
; reset a travers le dmacon, il faut rafraichir : LSP_DSP_PAULA_internal_location3 & LSP_DSP_PAULA_internal_length3 & LSP_DSP_PAULA_internal_offset3=0
        movei           #LSP_DSP_PAULA_internal_location2,R7                                                                                                                                                                                                                            | Rword1                                |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        movei           #LSP_DSP_PAULA_internal_length2,R8                                                                                                                                                                                                                                      | Rword1                                |       -                                       |       word2word1 > Wr7
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       -                                       |       word2word1 > Wr8
        store           R6,(R7)                         ; stocke le pointeur sample dans LSP_DSP_PAULA_internal_location3                                                                                                                               | Rr6   & Rr7                   |       -                                       |       -
        store           R9,(R8)                         ; stocke la nouvelle taille en 16:16: dans LSP_DSP_PAULA_internal_length3                                                                                                               | Rr9   & Rr8                   |       Mr7                                     |       -
; remplace les 4 octets en stock
        move            R6,R12                                                                                                                                                                                                                                                                                          | Rr6                                   |       Mr8                                     |       Mwrite
        shrq            #nb_bits_virgule_offset+2,R12   ; enleve la virgule  + 2 bits du bas                                                                                                                                                            | Rr12                                  |       -                                       |       Wr12    Mwrite
        movei           #LSP_DSP_PAULA_AUD2DAT,R8                                                                                                                                                                                                                                                       | Rword1                                |       Cr12                            |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr12
        shlq            #2,R12                                                                                                                                                                                                                                                                                          | Rr12                                  |       -                                       |       word2word1 > Wr8
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr12                            |       -
        load            (R12),R7                                                                                                                                                                                                                                                                                        | Rr12                                  |       -                                       |       Wr12
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr12                            |       -
        store           R7,(R8)                                                                                                                                                                                                                                                                                         | Rr7   & Rr8                   |       -                                       |       Wr7
       

DSP_LSP_Timer1_noreset2:
DSP_LSP_Timer1_skip2:
       
;--- test instrument voie 1
        movei           #DSP_LSP_Timer1_setIns1,R12                                                                                                                                                                                                                                                     | Rword1                                |       Mr8                                     |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Mwrite
        btst            #11,R2                                                                                                                                                                                                                                                                                          | Rr2                                   |       -                                       |       word2word1 > Wr12
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       -
        jump            ne,(R12)                                                                                                                                                                                                                                                                                        | Rflags        & Rr12          |       -                                       |       Wflags
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       ? > WPC                         |       -
       
        movei           #DSP_LSP_Timer1_skip1,R12                                                                                                                                                                                                                                                       | Rword1                                |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        btst            #10,R2                                                                                                                                                                                                                                                                                          | Rr2                                   |       -                                       |       word2word1 > Wr12
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       -
        jump            eq,(R12)                                                                                                                                                                                                                                                                                        | Rflags        & Rr12          |       -                                       |       Wflags
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       ? > WPC                         |       -

; repeat voie 1
        movei           #LSP_DSP_repeat_pointeur1,R3                                                                                                                                                                                                                                            | Rword1                                |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        movei           #LSP_DSP_repeat_length1,R4                                                                                                                                                                                                                                                      | Rword1                                |       -                                       |       word2word1 > Wr3
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        load            (R3),R3                                 ; pointeur sauvegard�, sur infos de repeats                                                                                                                                                                     | Rr3                                   |       -                                       |       word2word1 > Wr4
        load            (R4),R4                                                                                                                                                                                                                                                                                         | Rr4                                   |       Mr3                                     |       -
        movei           #LSP_DSP_PAULA_AUD1L,R7                                                                                                                                                                                                                                                         | Rword1                                |       Mr4                                     |       Wr3
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr4
        movei           #LSP_DSP_PAULA_AUD1LEN,R8                                                                                                                                                                                                                                                       | Rword1                                |       -                                       |       word2word1 > Wr7
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       -                                       |       word2word1 > Wr8
        store           R3,(R7)                                                                                                                                                                                                                                                                                         | Rr3   & Rr7                   |       -                                       |       -
        store           R4,(R8)                                 ; stocke le pointeur sample de repeat dans LSP_DSP_PAULA_AUD3L                                                                                                                          | Rr4   & Rr8                   |       Mr7                                     |       -
        jump            (R12)                           ; jump en DSP_LSP_Timer1_skip3                                                                                                                                                                                                  | Rr12                                  |       Mr8                                     |       Mwrite
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       WPC                                     |       Mwrite

DSP_LSP_Timer1_setIns1:
        loadw           (R0),R3                         ; offset de l'instrument par rapport au precedent                                                                                                                                                               | Rr0                                   |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr0                                     |       -
; addition en .w
        btst            #15,R3                                                                                                                                                                                                                                                                                          | Rr3                                   |       -                                       |       Wr3
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       -
        jr                      eq,.positif1                                                                                                                                                                                                                                                                            | Rflags                                |       -                                       |       Wflags
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       ? > WPC                         |       -
        movei           #$FFFF0000,R7                                                                                                                                                                                                                                                                           | Rword1                                |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        or                      R7,R3                                                                                                                                                                                                                                                                                           | Rr7   & Rr3                   |       -                                       |       word2word1 > Wr7
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr3                                     |       -
.positif1:
        add                     R3,R5                           ;R5=pointeur datas instruments                                                                                                                                                                                                  | Rr3   & Rr5                   |       -                                       |       Wr3
        addq            #2,R0                                                                                                                                                                                                                                                                                           | Rr0                                   |       Cr5                                     |       -


        movei           #LSP_DSP_PAULA_AUD1L,R7                                                                                                                                                                                                                                                         | Rword1                                |       Cr0                                     |       Wr5
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr0
        loadw           (R5),R6                                                                                                                                                                                                                                                                                         | Rr5                                   |       -                                       |       word2word1 > Wr7
        addq            #2,R5                                                                                                                                                                                                                                                                                           | Rr5                                   |       Mr5                                     |       -
        shlq            #16,R6                                                                                                                                                                                                                                                                                          | Rr6                                   |       Cr5                                     |       Wr6
        loadw           (R5),R8                                                                                                                                                                                                                                                                                         | Rr5                                   |       Cr6                                     |       Wr5
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr5                                     |       Wr6
        or                      R8,R6                                                                                                                                                                                                                                                                                           | Rr8   & Rr6                   |       -                                       |       Wr8
        movei           #LSP_DSP_PAULA_AUD1LEN,R8                                                                                                                                                                                                                                                       | Rword1                                |       Cr6                                     |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr6
        shlq            #nb_bits_virgule_offset,R6                                                                                                                                                                                                                                                      | Rr6                                   |       -                                       |       word2word1 > Wr8
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr6                                     |       -
        store           R6,(R7)                         ; stocke le pointeur sample a virgule dans LSP_DSP_PAULA_AUD3L                                                                                                                                  | Rr6   & Rr7                   |       -                                       |       Wr6
        addq            #2,R5                                                                                                                                                                                                                                                                                           | Rr5                                   |       Mr7                                     |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr5                                     |       Mwrite
        loadw           (R5),R9                         ; .w = R9 = taille du sample                                                                                                                                                                                                    | Rr5                                   |       -                                       |       Wr5
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr5                                     |       -
        shlq            #nb_bits_virgule_offset,R9                              ; en 16:16                                                                                                                                                                                                      | Rr9                                   |       -                                       |       Wr9
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9                                     |       -
        add                     R6,R9                           ; taille devient fin du sample, a virgule                                                                                                                                                                               | Rr6   & Rr9                   |       -                                       |       Wr9
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9                                     |       -
        store           R9,(R8)                         ; stocke la nouvelle fin a virgule                                                                                                                                                                                              | Rr9   & Rr8                   |       -                                       |       Wr9
        addq            #2,R5                           ; positionne sur pointeur de repeat                                                                                                                                                                                             | Rr5                                   |       Mr8                                     |       -
; repeat pointeur
        movei           #LSP_DSP_repeat_pointeur1,R7                                                                                                                                                                                                                                            | Rword1                                |       Cr5                                     |       Mwrite
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr5
        loadw           (R5),R4                                                                                                                                                                                                                                                                                         | Rr5                                   |       -                                       |       word2word1 > Wr7
        addq            #2,R5                                                                                                                                                                                                                                                                                           | Rr5                                   |       Mr5                                     |       -
        shlq            #16,R4                                                                                                                                                                                                                                                                                          | Rr4                                   |       Cr5                                     |       Wr4
        loadw           (R5),R8                                                                                                                                                                                                                                                                                         | Rr5                                   |       Cr4                                     |       Wr5
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr5                                     |       Wr4
        or                      R8,R4                                                                                                                                                                                                                                                                                           | Rr8   & Rr4                   |       -                                       |       Wr8
        addq            #2,R5                                                                                                                                                                                                                                                                                           | Rr5                                   |       Cr4                                     |       -
        shlq            #nb_bits_virgule_offset,R4                                                                                                                                                                                                                                                      | Rr4                                   |       Cr5                                     |       Wr4
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4                                     |       Wr5
        store           R4,(R7)                         ; pointeur sample repeat, a virgule                                                                                                                                                                                             | Rr4   & Rr7                   |       -                                       |       Wr4
; repeat length
        movei           #LSP_DSP_repeat_length1,R7                                                                                                                                                                                                                                                      | Rword1                                |       Mr7                                     |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Mwrite
        loadw           (R5),R8                         ; .w = R8 = taille du sample                                                                                                                                                                                                    | Rr5                                   |       -                                       |       word2word1 > Wr7
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr5                                     |       -
        shlq            #nb_bits_virgule_offset,R8                              ; en 16:16                                                                                                                                                                                                      | Rr8                                   |       -                                       |       Wr8
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr8                                     |       -
        add                     R4,R8                                                                                                                                                                                                                                                                                           | Rr4   & Rr8                   |       -                                       |       Wr8
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr8                                     |       -
        store           R8,(R7)                         ; stocke la nouvelle taille                                                                                                                                                                                                             | Rr8   & Rr7                   |       -                                       |       Wr8
        subq            #4,R5                                                                                                                                                                                                                                                                                           | Rr5                                   |       Mr7                                     |       -
       
; test le reset pour prise en compte immediate du changement de sample
        movei           #DSP_LSP_Timer1_noreset1,R12                                                                                                                                                                                                                                            | Rword1                                |       Cr5                                     |       Mwrite
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr5
        btst            #10,R2                                                                                                                                                                                                                                                                                          | Rr2                                   |       -                                       |       word2word1 > Wr12
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       -
        jump            eq,(R12)                                                                                                                                                                                                                                                                                        | Rflags                                |       -                                       |       Wflags
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       ? > WPC                         |       -
; reset a travers le dmacon, il faut rafraichir : LSP_DSP_PAULA_internal_location3 & LSP_DSP_PAULA_internal_length3 & LSP_DSP_PAULA_internal_offset3=0
        movei           #LSP_DSP_PAULA_internal_location1,R7                                                                                                                                                                                                                            | Rword1                                |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        movei           #LSP_DSP_PAULA_internal_length1,R8                                                                                                                                                                                                                                      | Rword1                                |       -                                       |       word2word1 > Wr7
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       -                                       |       word2word1 > Wr8
        store           R6,(R7)                         ; stocke le pointeur sample dans LSP_DSP_PAULA_internal_location3                                                                                                                               | Rr6   & Rr7                   |       -                                       |       -
        store           R9,(R8)                         ; stocke la nouvelle taille en 16:16: dans LSP_DSP_PAULA_internal_length3                                                                                                               | Rr9   & Rr8                   |       Mr7                                     |       -
; remplace les 4 octets en stock
        move            R6,R12                                                                                                                                                                                                                                                                                          | Rr6                                   |       Mr8                                     |       Mwrite
        shrq            #nb_bits_virgule_offset+2,R12   ; enleve la virgule  + 2 bits du bas                                                                                                                                                            | Rr12                                  |       -                                       |       Wr12    Mwrite
        movei           #LSP_DSP_PAULA_AUD1DAT,R8                                                                                                                                                                                                                                                       | Rword1                                |       Cr12                            |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr12
        shlq            #2,R12                                                                                                                                                                                                                                                                                          | Rr12                                  |       -                                       |       word2word1 > Wr8
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr12                            |       -
        load            (R12),R7                                                                                                                                                                                                                                                                                        | Rr12                                  |       -                                       |       Wr12
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr12                            |       -
        store           R7,(R8)                                                                                                                                                                                                                                                                                         | Rr7   & Rr8                   |       -                                       |       Wr7
       

DSP_LSP_Timer1_noreset1:
DSP_LSP_Timer1_skip1:
       
;--- test instrument voie 0
        movei           #DSP_LSP_Timer1_setIns0,R12                                                                                                                                                                                                                                                     | Rword1                                |       Mr8                                     |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Mwrite
        btst            #9,R2                                                                                                                                                                                                                                                                                           | Rr2                                   |       -                                       |       word2word1 > Wr12
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       -
        jump            ne,(R12)                                                                                                                                                                                                                                                                                        | Rflags        & Rr12          |       -                                       |       Wflags
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       ? > WP                          |       -
       
        movei           #DSP_LSP_Timer1_skip0,R12                                                                                                                                                                                                                                                       | Rword1                                |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        btst            #8,R2                                                                                                                                                                                                                                                                                           | Rr2                                   |       -                                       |       word2word1 > Wr12
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       -
        jump            eq,(R12)                                                                                                                                                                                                                                                                                        | Rflags        & Rr12          |       -                                       |       Wflags
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       ? > WPC                         |       -

; repeat voie 0
        movei           #LSP_DSP_repeat_pointeur0,R3                                                                                                                                                                                                                                            | Rword1                                |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        movei           #LSP_DSP_repeat_length0,R4                                                                                                                                                                                                                                                      | Rword1                                |       -                                       |       word2word1 > Wr3
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        load            (R3),R3                                 ; pointeur sauvegard�, sur infos de repeats                                                                                                                                                                     | Rr3                                   |       -                                       |       word2word1 > Wr4
        load            (R4),R4                                                                                                                                                                                                                                                                                         | Rr4                                   |       Mr3                                     |       -
        movei           #LSP_DSP_PAULA_AUD0L,R7                                                                                                                                                                                                                                                         | Rword1                                |       Mr4                                     |       Wr3
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr4
        movei           #LSP_DSP_PAULA_AUD0LEN,R8                                                                                                                                                                                                                                                       | Rword1                                |       -                                       |       word2word1 > Wr7
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       -                                       |       word2word1 > Wr8
        store           R3,(R7)                                                                                                                                                                                                                                                                                         | Rr3   & Rr7                   |       -                                       |       -
        store           R4,(R8)                                 ; stocke le pointeur sample de repeat dans LSP_DSP_PAULA_AUD3L                                                                                                                          | Rr4   & Rr8                   |       Mr7                                     |       -
        jump            (R12)                           ; jump en DSP_LSP_Timer1_skip3                                                                                                                                                                                                  | Rr12                                  |       Mr8                                     |       Mwrite
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       WPC                                     |       Mwrite

DSP_LSP_Timer1_setIns0:
        loadw           (R0),R3                         ; offset de l'instrument par rapport au precedent                                                                                                                                                               | Rr0                                   |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr0                                     |       -
; addition en .w
        btst            #15,R3                                                                                                                                                                                                                                                                                          | Rr3                                   |       -                                       |       Wr3
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       -
        jr                      eq,.positif0                                                                                                                                                                                                                                                                            | Rflags                                |       -                                       |       Wflags
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       ? > WPC                         |       -
        movei           #$FFFF0000,R7                                                                                                                                                                                                                                                                           | Rword1                                |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        or                      R7,R3                                                                                                                                                                                                                                                                                           | Rr7   & Rr3                   |       -                                       |       word2word1 > Wr7
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr3                                     |       -

.positif0:
        add                     R3,R5                           ;R5=pointeur datas instruments                                                                                                                                                                                                  | Rr3   & Rr5                   |       -                                       |       Wr3
        addq            #2,R0                                                                                                                                                                                                                                                                                           | Rr0                                   |       Cr5                                     |       -


        movei           #LSP_DSP_PAULA_AUD0L,R7                                                                                                                                                                                                                                                         | Rword1                                |       Cr0                                     |       Wr5
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr0
        loadw           (R5),R6                                                                                                                                                                                                                                                                                         | Rr5                                   |       -                                       |       word2word1 > Wr7
        addq            #2,R5                                                                                                                                                                                                                                                                                           | Rr5                                   |       Mr5                                     |       -
        shlq            #16,R6                                                                                                                                                                                                                                                                                          | Rr6                                   |       Cr5                                     |       Wr6
        loadw           (R5),R8                                                                                                                                                                                                                                                                                         | Rr5                                   |       Cr6                                     |       Wr5
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr5                                     |       Wr6
        or                      R8,R6                                                                                                                                                                                                                                                                                           | Rr8   & Rr6                   |       -                                       |       Wr8
        movei           #LSP_DSP_PAULA_AUD0LEN,R8                                                                                                                                                                                                                                                       | Rword1                                |       Cr6                                     |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr6
        shlq            #nb_bits_virgule_offset,R6                                                                                                                                                                                                                                                      | Rr6                                   |       -                                       |       word2word1 > Wr8
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr6                                     |       -
        store           R6,(R7)                         ; stocke le pointeur sample a virgule dans LSP_DSP_PAULA_AUD3L                                                                                                                                  | Rr6   & Rr7                   |       -                                       |       Wr6
        addq            #2,R5                                                                                                                                                                                                                                                                                           | Rr5                                   |       Mr7                                     |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr5                                     |       Mwrite
        loadw           (R5),R9                         ; .w = R9 = taille du sample                                                                                                                                                                                                    | Rr5                                   |       -                                       |       Wr5
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr5                                     |       -
        shlq            #nb_bits_virgule_offset,R9                              ; en 16:16                                                                                                                                                                                                      | Rr9                                   |       -                                       |       Wr9
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9                                     |       -
        add                     R6,R9                           ; taille devient fin du sample, a virgule                                                                                                                                                                               | Rr6   & Rr9                   |       -                                       |       Wr9
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9                                     |       -
        store           R9,(R8)                         ; stocke la nouvelle fin a virgule                                                                                                                                                                                              | Rr9   & Rr8                   |       -                                       |       Wr9
        addq            #2,R5                           ; positionne sur pointeur de repeat                                                                                                                                                                                             | Rr5                                   |       Mr8                                     |       -
; repeat pointeur
        movei           #LSP_DSP_repeat_pointeur0,R7                                                                                                                                                                                                                                            | Rword1                                |       Cr5                                     |       Mwrite
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr5
        loadw           (R5),R4                                                                                                                                                                                                                                                                                         | Rr5                                   |       -                                       |       word2word1 > Wr7
        addq            #2,R5                                                                                                                                                                                                                                                                                           | Rr5                                   |       Mr5                                     |       -
        shlq            #16,R4                                                                                                                                                                                                                                                                                          | Rr4                                   |       Cr5                                     |       Wr4
        loadw           (R5),R8                                                                                                                                                                                                                                                                                         | Rr5                                   |       Cr4                                     |       Wr5
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr5                                     |       Wr4
        or                      R8,R4                                                                                                                                                                                                                                                                                           | Rr8   & Rr4                   |       -                                       |       Wr8
        addq            #2,R5                                                                                                                                                                                                                                                                                           | Rr5                                   |       Cr4                                     |       -
        shlq            #nb_bits_virgule_offset,R4                                                                                                                                                                                                                                                      | Rr4                                   |       Cr5                                     |       Wr4
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4                                     |       Wr5
        store           R4,(R7)                         ; pointeur sample repeat, a virgule                                                                                                                                                                                             | Rr4   & Rr7                   |       -                                       |       Wr4
; repeat length
        movei           #LSP_DSP_repeat_length0,R7                                                                                                                                                                                                                                                      | Rword1                                |       Mr7                                     |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Mwrite
        loadw           (R5),R8                         ; .w = R8 = taille du sample                                                                                                                                                                                                    | Rr5                                   |       -                                       |       word2word1 > Wr7
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr5                                     |       -
        shlq            #nb_bits_virgule_offset,R8                              ; en 16:16                                                                                                                                                                                                      | Rr8                                   |       -                                       |       Wr8
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr8                                     |       -
        add                     R4,R8                                                                                                                                                                                                                                                                                           | Rr4   & Rr8                   |       -                                       |       Wr8
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr8                                     |       -
        store           R8,(R7)                         ; stocke la nouvelle taille                                                                                                                                                                                                             | Rr8   & Rr7                   |       -                                       |       Wr8
        subq            #4,R5                                                                                                                                                                                                                                                                                           | Rr5                                   |       Mr7                                     |       -
       
; test le reset pour prise en compte immediate du changement de sample
        movei           #DSP_LSP_Timer1_noreset0,R12                                                                                                                                                                                                                                            | Rword1                                |       Cr5                                     |       Mwrite
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr5
        btst            #8,R2                                                                                                                                                                                                                                                                                           | Rr2                                   |       -                                       |       word2word1 > Wr12
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       -
        jump            eq,(R12)                                                                                                                                                                                                                                                                                        | Rflags        & Rr12          |       -                                       |       Wflags
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       ? > WPC                         |       -
; reset a travers le dmacon, il faut rafraichir : LSP_DSP_PAULA_internal_location3 & LSP_DSP_PAULA_internal_length3 & LSP_DSP_PAULA_internal_offset3=0
        movei           #LSP_DSP_PAULA_internal_location0,R7                                                                                                                                                                                                                            | Rword1                                |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        movei           #LSP_DSP_PAULA_internal_length0,R8                                                                                                                                                                                                                                      | Rword1                                |       -                                       |       word2word1 > Wr7
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       -                                       |       word2word1 > Wr8
        store           R6,(R7)                         ; stocke le pointeur sample dans LSP_DSP_PAULA_internal_location3                                                                                                                               | Rr6   & Rr7                   |       -                                       |       -
        store           R9,(R8)                         ; stocke la nouvelle taille en 16:16: dans LSP_DSP_PAULA_internal_length3                                                                                                               | Rr9   & Rr8                   |       Mr7                                     |       -
; remplace les 4 octets en stock
        move            R6,R12                                                                                                                                                                                                                                                                                          | Rr6                                   |       Mr8                                     |       Mwrite
        shrq            #nb_bits_virgule_offset+2,R12   ; enleve la virgule  + 2 bits du bas                                                                                                                                                            | Rr12                                  |       -                                       |       Wr12    Mwrite
        movei           #LSP_DSP_PAULA_AUD0DAT,R8                                                                                                                                                                                                                                                       | Rword1                                |       Cr12                            |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr12
        shlq            #2,R12                                                                                                                                                                                                                                                                                          | Rr12                                  |       -                                       |       word2word1 > Wr8
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr12                            |       -
        load            (R12),R7                                                                                                                                                                                                                                                                                        | Rr12                                  |       -                                       |       Wr12
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr12                            |       -
        store           R7,(R8)                                                                                                                                                                                                                                                                                         | Rr7   & Rr8                   |       -                                       |       Wr7
       

DSP_LSP_Timer1_noreset0:
DSP_LSP_Timer1_skip0:
       
       

DSP_LSP_Timer1_noInst:
        .if                     LSP_avancer_module=1
        store           R0,(R14)                        ; store word stream (or byte stream if coming from early out)                                                                                                                                   | Rr0   & Rr14                  |       Mr8                                     |       -
        .endif


; - fin de la conversion du player LSP

; elements d'emulation Paula
; calcul des increments
; calcul de l'increment a partir de la note Amiga : (3546895 / note) / frequence I2S

; conversion period => increment voie 0
        movei           #DSP_frequence_de_replay_reelle_I2S,R0                                                                                                                                                                                                                          | Rword1                                |       Mr14                            |       Mwrite
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Mwrite
        movei           #LSP_DSP_PAULA_internal_increment0,R1                                                                                                                                                                                                                           | Rword1                                |       -                                       |       word2word1 > Wr0
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        movei           #LSP_DSP_PAULA_AUD0PER,R2                                                                                                                                                                                                                                                       | Rword1                                |       -                                       |       word2word1 > Wr1
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        load            (R0),R0                                                                                                                                                                                                                                                                                         | Rr0                                   |       -                                       |       word2word1 > Wr2
        movei           #3546895,R3                                                                                                                                                                                                                                                                                     | Rword1                                |       Mr0                                     |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr0
        load            (R2),R2                                                                                                                                                                                                                                                                                         | Rr2                                   |       -                                       |       word2word1 > Wr3
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr2                                     |       -
        cmpq            #0,R2                                                                                                                                                                                                                                                                                           | Rr2                                   |       -                                       |       Wr2
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       -
        jr                      ne,.1                                                                                                                                                                                                                                                                                           | Rflags                                |       -                                       |       Wflags
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       ? > WPC                         |       -
        moveq           #0,R4                                                                                                                                                                                                                                                                                           | #0                                    |       -                                       |       -
        jr                      .2                                                                                                                                                                                                                                                                                                      | -                                             |       -                                       |       Wr4
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       WPC                                     |       -
.1:
        move            R3,R4                                                                                                                                                                                                                                                                                           | Rr3                                   |       -                                       |       -
        div                     R2,R4                   ; (3546895 / note)                                                                                                                                                                                                                                      | Rr2   & Rr4                   |       -                                       |       Wr4
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-1                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-2                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-3                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-4                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-5                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-6                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-7                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-8                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-9                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-10                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-11                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-12                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-13                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-14                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-15                          |       -
        or                      R4,R4                                                                                                                                                                                                                                                                                           | Rr4                                   |       -                                       |       Wr4
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4                                     |       -
        shlq            #nb_bits_virgule_offset,R4                                                                                                                                                                                                                                                      | Rr4                                   |       -                                       |       Wr4
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4                                     |       -
        div                     R0,R4                   ; (3546895 / note) / frequence I2S en 16:16                                                                                                                                                                                     | Rr0   & Rr4                   |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-1                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-2                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-3                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-4                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-5                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-6                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-7                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-8                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-9                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-10                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-11                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-12                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-13                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-14                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-15                          |       -
        or                      R4,R4                                                                                                                                                                                                                                                                                           | Rr4                                   |       -                                       |       Wr4
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4                                     |       -
.2:
        store           R4,(R1)                                                                                                                                                                                                                                                                                         | Rr4   & Rr1                   |       -                                       |       Wr4
; conversion period => increment voie 1
        movei           #LSP_DSP_PAULA_AUD1PER,R2                                                                                                                                                                                                                                                       | Rword1                                |       Mr1                                     |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       MWrite
        movei           #LSP_DSP_PAULA_internal_increment1,R1                                                                                                                                                                                                                           | Rword1                                |       -                                       |       word2word1 > Wr2
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        move            R3,R4                                                                                                                                                                                                                                                                                           | Rr3                                   |       -                                       |       word2word1 > Wr1
        load            (R2),R2                                                                                                                                                                                                                                                                                         | Rr2                                   |       -                                       |       Wr4
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr2                                     |       -
        cmpq            #0,R2                                                                                                                                                                                                                                                                                           | Rr2                                   |       -                                       |       Wr2
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       -
        jr                      ne,.12                                                                                                                                                                                                                                                                                          | Rflags                                |       -                                       |       Wflags
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       ? > WPC                         |       -
        moveq           #0,R4                                                                                                                                                                                                                                                                                           | #0                                    |       -                                       |       -
        jr                      .22                                                                                                                                                                                                                                                                                                     | -                                             |       -                                       |       Wr4
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       WPC                                     |       -
.12:

        div                     R2,R4                   ; (3546895 / note)                                                                                                                                                                                                                                      | Rr2   & Rr4                   |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-1                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-2                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-3                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-4                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-5                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-6                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-7                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-8                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-9                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-10                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-11                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-12                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-13                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-14                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-15                          |       -
        or                      R4,R4                                                                                                                                                                                                                                                                                           | Rr4                                   |       -                                       |       Wr4
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4                                     |       -
        shlq            #nb_bits_virgule_offset,R4                                                                                                                                                                                                                                                      | Rr4                                   |       -                                       |       Wr4
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4                                     |       -
        div                     R0,R4                   ; (3546895 / note) / frequence I2S en 16:16                                                                                                                                                                                     | Rr0   & Rr4                   |       -                                       |       Wr4
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-1                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-2                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-3                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-4                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-5                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-6                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-7                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-8                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-9                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-10                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-11                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-12                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-13                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-14                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-15                          |       -
        or                      R4,R4                                                                                                                                                                                                                                                                                           | Rr4                                   |       -                                       |       Wr4
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4                                     |       -
.22:
        store           R4,(R1)                                                                                                                                                                                                                                                                                         | Rr4   & Rr1                   |       -                                       |       Wr4

; conversion period => increment voie 2
        movei           #LSP_DSP_PAULA_AUD2PER,R2                                                                                                                                                                                                                                                       | Rword1                                |       Mr1                                     |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       MWrite
        movei           #LSP_DSP_PAULA_internal_increment2,R1                                                                                                                                                                                                                           | Rword1                                |       -                                       |       word2word1 > Wr2
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        move            R3,R4                                                                                                                                                                                                                                                                                           | Rr3                                   |       -                                       |       word2word1 > Wr1
        load            (R2),R2                                                                                                                                                                                                                                                                                         | Rr2                                   |       -                                       |       Wr4
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr2                                     |       -
        cmpq            #0,R2                                                                                                                                                                                                                                                                                           | Rr2                                   |       -                                       |       Wr2
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       -
        jr                      ne,.13                                                                                                                                                                                                                                                                                          | Rflags                                |       -                                       |       Wflags
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       ? > WPC                         |       -
        moveq           #0,R4                                                                                                                                                                                                                                                                                           | #0                                    |       -                                       |       -
        jr                      .23                                                                                                                                                                                                                                                                                                     | -                                             |       -                                       |       Wr4
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       WPC                                     |       -
.13:
        div                     R2,R4                   ; (3546895 / note)                                                                                                                                                                                                                                      | Rr2   & Rr4                   |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-1                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-2                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-3                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-4                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-5                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-6                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-7                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-8                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-9                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-10                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-11                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-12                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-13                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-14                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-15                          |       -
        or                      R4,R4                                                                                                                                                                                                                                                                                           | Rr4                                   |       -                                       |       Wr4
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4                                     |       -
        shlq            #nb_bits_virgule_offset,R4                                                                                                                                                                                                                                                      | Rr4                                   |       -                                       |       Wr4
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4                                     |       -
        div                     R0,R4                   ; (3546895 / note) / frequence I2S en 16:16                                                                                                                                                                                     | Rr0   & Rr4                   |       -                                       |       Wr4
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-1                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-2                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-3                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-4                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-5                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-6                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-7                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-8                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-9                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-10                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-11                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-12                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-13                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-14                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-15                          |       -
        or                      R4,R4                                                                                                                                                                                                                                                                                           | Rr4                                   |       -                                       |       Wr4
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4                                     |       -
.23:
        store           R4,(R1)                                                                                                                                                                                                                                                                                         | Rr4   & Rr1                   |       -                                       |       Wr4

; conversion period => increment voie 3
        movei           #LSP_DSP_PAULA_AUD3PER,R2                                                                                                                                                                                                                                                       | Rword1                                |       Mr1                                     |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Mwrite
        movei           #LSP_DSP_PAULA_internal_increment3,R1                                                                                                                                                                                                                           | Rword1                                |       -                                       |       word2word1 > Wr2
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        move            R3,R4                                                                                                                                                                                                                                                                                           | Rr3                                   |       -                                       |       word2word1 > Wr1
        load            (R2),R2                                                                                                                                                                                                                                                                                         | Rr2                                   |       -                                       |       Wr4
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr2                                     |       -
        cmpq            #0,R2                                                                                                                                                                                                                                                                                           | Rr2                                   |       -                                       |       Wr2
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cflags                          |       -
        jr                      ne,.14                                                                                                                                                                                                                                                                                          | Rflags                                |       -                                       |       Wflags
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       ? > WPC                         |       -
        moveq           #0,R4                                                                                                                                                                                                                                                                                           | #0                                    |       -                                       |       -
        jr                      .24                                                                                                                                                                                                                                                                                                     | -                                             |       -                                       |       Wr4
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       WPC                                     |       -
.14:
        div                     R2,R4                   ; (3546895 / note)                                                                                                                                                                                                                                      | Rr2   & Rr4                   |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-1                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-2                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-3                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-4                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-5                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-6                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-7                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-8                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-9                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-10                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-11                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-12                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-13                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-14                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-15                          |       -
        or                      R4,R4                                                                                                                                                                                                                                                                                           | Rr4                                   |       -                                       |       Wr4
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4                                     |       -
        shlq            #nb_bits_virgule_offset,R4                                                                                                                                                                                                                                                      | Rr4                                   |       -                                       |       Wr4
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4                                     |       -
        div                     R0,R4                   ; (3546895 / note) / frequence I2S en 16:16                                                                                                                                                                                     | Rr0   & Rr4                   |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-1                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-2                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-3                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-4                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-5                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-6                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-7                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-8                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-9                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-10                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-11                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-12                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-13                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-14                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4-15                          |       -
        or                      R4,R4                                                                                                                                                                                                                                                                                           | Rr4                                   |       -                                       |       Wr4
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr4                                     |       -
.24:
        store           R4,(R1)                                                                                                                                                                                                                                                                                         | Rr4   & Rr1                   |       -                                       |       -

;--------------------------------------------------

       
;------------------------------------  
; return from interrupt Timer 1
        load    (r31),r12       ; return address                                                                                                                                                                                                                                                        | Rr31                                  |       Mr1                                     |       -
        ;bset   #10,r13         ; clear latch 1 = I2S
        bset    #11,r13         ; clear latch 1 = timer 1                                                                                                                                                                                                                                       | Rr13                                  |       Mr31                            |       MWrite
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr13                            |       -
        ;bset   #12,r13         ; clear latch 1 = timer 2
        bclr    #3,r13          ; clear IMASK                                                                                                                                                                                                                                                           | Rr13                                  |       -                                       |       Wr13
        addq    #4,r31          ; pop from stack                                                                                                                                                                                                                                                        | Rr31                                  |       Cr13                            |       -
        addqt   #2,r12          ; next instruction                                                                                                                                                                                                                                                      | Rr12                                  |       Cr31                            |       Wr13
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr12                            |       -
        jump    t,(r12)         ; return                                                                                                                                                                                                                                                                        | Rr12                                  |       -                                       |       Wr12
        store   r13,(r16)       ; restore flags                                                                                                                                                                                                                                                         | Rr13  & Rr16                  |       WPC                                     |       -

;------------------------------------  
;rewind
DSP_LSP_Timer1_r_rewind:
;       movei           #LSPVars,R14
;       load            (R14),R0                                        ; R0 = byte stream
        load            (R14+8),R0                      ; bouclage : R0 = byte stream / m_byteStreamLoop = 8                                                                                                                                                    | Rr14                                  |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr14+8                          |       -
        movei           #DSP_LSP_Timer1_process,R12                                                                                                                                                                                                                                                     | Rword1                                |                       Mr14+8          |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr0
        load            (R14+9),R3                      ; m_wordStreamLoop=9                                                                                                                                                                                                                    | Rr14                                  |       -                                       |       word2word1 > Wr12
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr14+9                          |       -
        jump            (R12)                                                                                                                                                                                                                                                                                           | Rr12                                  |                       Mr14+9          |       -
        store           R3,(R14+1)                              ; m_wordStream=1                                                                                                                                                                                                                        | Rr3   & Rr14                  |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr14+1  WPC                     |       -

;------------------------------------  
; change bpm
DSP_LSP_Timer1_r_chgbpm:
        movei           #DSP_LSP_Timer1_process,R12                                                                                                                                                                                                                                                     | Rword1                                |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        loadb           (R0),R11                                                                                                                                                                                                                                                                                        | Rr0                                   |       -                                       |       word2word1 > Wr12
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr0                                     |       -
        store           R11,(R14+7)             ; R3=nouveau bpm / m_currentBpm = 7                                                                                                                                                                                                     | Rr11  & Rr14                  |       -                                       |       Wr11
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr14+7                          |       -
;application nouveau bpm dans Timer 1
        movei   #60*256,R10                                                                                                                                                                                                                                                                                             | Rword1                                |                       Mr14+7          |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Mwrite
        ;shlq   #8,R10                          ; 16 bits de virgule
        div             R11,R10                         ; 60/bpm                                                                                                                                                                                                                                                        | Rr11  & Rr10                  |       -                                       |       Wr10
        movei   #24*65536,R9                            ; 24=> 5 bits                                                                                                                                                                                                                           | Rword1                                |       Cr10-1                          |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       Cr10-2  word1           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-3                          |       word2word1 > Wr9
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-4                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-5                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-6                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-7                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-8                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-9                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-10                         |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-11                         |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-12                         |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-13                         |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-14                         |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-15                         |       -
        or              R10,R10                                                                                                                                                                                                                                                                                                 | Rr10                                  |       -                                       |       Wr10
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10                            |       -
        ;shlq   #16,R9
        div             R10,R9                          ; R9=                                                                                                                                                                                                                                                           | Rr10  & Rr9                   |       -                                       |       Wr10
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9-1                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9-2                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9-3                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9-4                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9-5                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9-6                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9-7                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9-8                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9-9                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9-10                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9-11                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9-12                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9-13                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9-14                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9-15                          |       -
        or              R9,R9                                                                                                                                                                                                                                                                                                   | Rr9                                   |       -                                       |       Wr9
                                                                                                                                                                                                                                                                                                                                        |-                                              |       Cr9                                     |       -
        shrq    #8,R9                           ; R9=frequence replay                                                                                                                                                                                                                           | Rr9                                   |       -                                       |       Wr9
        ;move   R9,R11  
; frequence du timer 1
        movei   #182150,R10                             ; 26593900 / 146 = 182150                                                                                                                                                                                                               | Rword1                                |       Cr9                                     |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr9
        div             R9,R10                                                                                                                                                                                                                                                                                                  | Rr9   & Rr10                  |       -                                       |       word2word1 > Wr10
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-1                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-2                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-3                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-4                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-5                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-6                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-7                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-8                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-9                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-10                         |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-11                         |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-12                         |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-13                         |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-14                         |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-15                         |       -
        or              R10,R10                                                                                                                                                                                                                                                                                                 | Rr10                                  |       -                                       |       Wr10
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10                            |       -
        move    R10,R13                                                                                                                                                                                                                                                                                                 | Rr10                                  |       -                                       |       Wr10
        subq    #1,R13                                  ; -1 pour parametrage du timer 1                                                                                                                                                                                                | Rr13                                  |       -                                       |       Wr13
; 26593900 / 50 = 531�878 => 2 � 73 � 3643 => 146*3643
        movei   #JPIT1,r10                              ; F10000                                                                                                                                                                                                                                                | Rword1                                |       Cr13                            |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr13
        movei   #145*65536,r9                           ; Timer 1 Pre-scaler                                                                                                                                                                                                            | Rword1                                |       -                                       |       word2word1 > Wr10
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        ;shlq   #16,r12
        or              R13,R9                                                                                                                                                                                                                                                                                                  | Rr13  & Rr9                   |       -                                       |       word2word1 > Wr9
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9                                     |       -
        store   r9,(r10)                                ; JPIT1 & JPIT2                                                                                                                                                                                                                                 | Rr9   & Rr10                  |       -                                       |       Wr9
        jump            (R12)                                                                                                                                                                                                                                                                                           | Rr12                                  |       Mr10                            |       -
        addq            #1,R0                                                                                                                                                                                                                                                                                           | Rr0                                   |       WPC                                     |       -




; ------------------- N/A ------------------
DSP_LSP_routine_interruption_Timer2:
; ------------------- N/A ------------------



; ------------- main DSP ------------------
DSP_routine_init_DSP:
; assume run from bank 1
        movei   #DSP_ISP+(DSP_STACK_SIZE*4),r31                 ; init isp                                                                                                                                                                                                              | Rword1                                |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        moveq   #0,r1                                                                                                                                                                                                                                                                                                   | #0                                    |       -                                       |       -
        moveta  r31,r31                                                                 ; ISP (bank 0)                                                                                                                                                                                                  | Rr31                                  |       -                                       |       Wr1
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       -                                       |       Wr'31
        movei   #DSP_USP+(DSP_STACK_SIZE*4),r31                 ; init usp                                                                                                                                                                                                              | Rword1                                |       -                                       |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -

; calculs des frequences deplac� dans DSP
; sclk I2S
        movei   #LSP_DSP_Audio_frequence,R0                                                                                                                                                                                                                                                             | Rword1                                |       -                                       |       word2word1 > Wr31
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        movei   #frequence_Video_Clock_divisee,R1                                                                                                                                                                                                                                               | Rword1                                |       -                                       |       word2word1 > Wr0
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        load    (R1),R1                                                                                                                                                                                                                                                                                                 | Rr1                                   |       -                                       |       word2word1 > Wr1
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr1                                     |       -
        shlq    #8,R1                                                                                                                                                                                                                                                                                                   | Rr1                                   |       -                                       |       Wr1
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr1                                     |       -
        div             R0,R1                                                                                                                                                                                                                                                                                                   | Rr0   & Rr1                   |       -                                       |       Wr1
        movei   #128,R2                                                                                                                                                                                                                                                                                                 | Rword1                                |       Cr1-1                           |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       Cr1-2   word1           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr1-3                           |       word2word1 > Wr2
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr1-4                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr1-5                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr1-6                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr1-7                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr1-8                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr1-9                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr1-10                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr1-11                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr1-12                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr1-13                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr1-14                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr1-15                          |       -
        add             R2,R1                   ; +128 = +0.5                                                                                                                                                                                                                                                   | Rr2   & Rr1                   |       -                                       |       Wr1
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr1                                     |       -
        shrq    #8,R1                                                                                                                                                                                                                                                                                                   | Rr1                                   |       -                                       |       Wr1
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr1                                     |       -
        subq    #1,R1                                                                                                                                                                                                                                                                                                   | Rr1                                   |       -                                       |       Wr1
        movei   #DSP_parametre_de_frequence_I2S,r2                                                                                                                                                                                                                                              | Rword1                                |       Cr1                                     |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr1
        store   R1,(R2)                                                                                                                                                                                                                                                                                                 | Rr1   & Rr2                   |       -                                       |       Wr2
;calcul inverse
        addq    #1,R1                                                                                                                                                                                                                                                                                                   | Rr1                                   |       Mr2                                     |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr1                                     |       MWrite
        add             R1,R1                   ; *2                                                                                                                                                                                                                                                                    | Rr1                                   |       -                                       |       Wr1
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr1                                     |       -
        add             R1,R1                   ; *2                                                                                                                                                                                                                                                                    | Rr1                                   |       -                                       |       Wr1
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr1                                     |       -
        shlq    #4,R1                   ; *16                                                                                                                                                                                                                                                                   | Rr1                                   |       -                                       |       Wr1
        movei   #frequence_Video_Clock,R0                                                                                                                                                                                                                                                               | Rword1                                |       Cr1                                     |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr1
        load    (R0),R0                                                                                                                                                                                                                                                                                                 | Rr0                                   |       -                                       |       word2word1 > Wr0
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr0                                     |       -
        div             R1,R0                                                                                                                                                                                                                                                                                                   | Rr1   & Rr0                   |       -                                       |       Wr0
        movei   #DSP_frequence_de_replay_reelle_I2S,R2                                                                                                                                                                                                                                  | Rword1                                |       Cr0-1                           |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       Cr0-2           word1   |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr0-3                           |       word2word1 > Wr2
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr0-4                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr0-5                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr0-6                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr0-7                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr0-8                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr0-9                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr0-10                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr0-11                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr0-12                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr0-13                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr0-14                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr0-15                          |       -
        store   R0,(R2)                                                                                                                                                                                                                                                                                                 | Rr0   & Rr2                   |       -                                       |       Wr0
       

; init I2S
        movei   #SCLK,r10                                                                                                                                                                                                                                                                                               | Rword1                                |       Mr2                                     |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       MWrite
        movei   #SMODE,r11                                                                                                                                                                                                                                                                                              | Rword1                                |       -                                       |       word2word1 > Wr10
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        movei   #DSP_parametre_de_frequence_I2S,r12                                                                                                                                                                                                                                             | Rword1                                |       -                                       |       word2word1 > Wr11
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        movei   #%001101,r13                    ; SMODE bascule sur RISING                                                                                                                                                                                                              | Rword1                                |       -                                       |       word2word1 > Wr12
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        load    (r12),r12                               ; SCLK                                                                                                                                                                                                                                                  | Rr12                                  |       -                                       |       word2word1 > Wr13
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Mr12                            |       -
        store   r12,(r10)                                                                                                                                                                                                                                                                                               | Rr12  & Rr10                  |       -                                       |       Wr12
        store   r13,(r11)                                                                                                                                                                                                                                                                                               | Rr13  & Rr11                  |       Mr10                            |       -


; init Timer 1
; frq = 24/(60/bpm)
        movei   #LSP_BPM_frequence_replay,R11                                                                                                                                                                                                                                                   | Rword1                                |       Mr11                            |       MWrite
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       MWrite
        load    (R11),R11                                                                                                                                                                                                                                                                                               | Rr11                                  |       -                                       |       word2word1 > Wr11
        movei   #60*256,R10                                                                                                                                                                                                                                                                                             | Rword1                                |       Mr11                            |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr11
        ;shlq   #8,R10                          ; 16 bits de virgule
        div             R11,R10                         ; 60/bpm                                                                                                                                                                                                                                                        | Rr11  & Rr10                  |       -                                       |       word2word1 > Wr10
        movei   #24*65536,R9                            ; 24=> 5 bits                                                                                                                                                                                                                           | Rword1                                |       Cr10-1                          |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       Cr10-2          word1   |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-3                          |       word2word1 > Wr9
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-4                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-5                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-6                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-7                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-8                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-9                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-10                         |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-11                         |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-12                         |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-13                         |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-14                         |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-15                         |       -
        or              R10,R10                                                                                                                                                                                                                                                                                                 | Rr10                                  |       -                                       |       Wr10
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10                            |       -
        ;shlq   #16,R9
        div             R10,R9                          ; R9=                                                                                                                                                                                                                                                           | Rr10  & Rr9                   |       -                                       |       Wr10
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9-1                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9-2                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9-3                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9-4                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9-5                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9-6                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9-7                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9-8                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9-9                           |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9-10                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9-11                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9-12                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9-13                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9-14                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9-15                          |       -
        or              R9,R9                                                                                                                                                                                                                                                                                                   | Rr9                                   |       -                                       |       Wr9
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9                                     |       -
        shrq    #8,R9                           ; R9=frequence replay                                                                                                                                                                                                                           | Rr9                                   |       -                                       |       Wr9
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr9                                     |       -
        move    R9,R11                                                                                                                                                                                                                                                                                                  | Rr9                                   |       -                                       |       Wr9
       

; frequence du timer 1
        movei   #182150,R10                             ; 26593900 / 146 = 182150                                                                                                                                                                                                               | Rword1                                |       -                                       |       Wr11
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        div             R11,R10                                                                                                                                                                                                                                                                                                 | Rr11  & Rr10                  |       -                                       |       word2word1 > Wr10
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-1                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-2                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-3                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-4                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-5                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-6                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-7                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-8                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-9                          |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-10                         |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-11                         |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-12                         |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-13                         |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-14                         |       -
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10-15                         |       -
        or              R10,R10                                                                                                                                                                                                                                                                                                 | Rr10                                  |       -                                       |       Wr10
                                                                                                                                                                                                                                                                                                                                        | -                                             |       Cr10                            |       -
        move    R10,R13                                                                                                                                                                                                                                                                                                 | Rr10                                  |       -                                       |       Wr10
               
        subq    #1,R13                                  ; -1 pour parametrage du timer 1                                                                                                                                                                                                | Rr13                                  |       -                                       |       Wr13
       
       

; 26593900 / 50 = 531�878 => 2 � 73 � 3643 => 146*3643
        movei   #JPIT1,r10                              ; F10000                                                                                                                                                                                                                                                | Rword1                                |       Cr13                            |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       Wr13
        ;movei  #JPIT2,r11                              ; F10002
        movei   #145*65536,r12                          ; Timer 1 Pre-scaler                                                                                                                                                                                                            | Rword1                                |       -                                       |       word2word1 > Wr10
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        ;shlq   #16,r12
        or              R13,R12                                                                                                                                                                                                                                                                                                 | Rr13  & Rr12                  |       -                                       |       word2word1 > Wr12
                                                                                                                                                                                                                                                                                                                                        |-                                              |       Cr12                            |       -
        store   r12,(r10)                               ; JPIT1 & JPIT2                                                                                                                                                                                                                                 | Rr12  & Rr10                  |       -                                       |       Wr12


; init timer 2

;       movei   #JPIT3,r10                              ; F10004
;       movei   #JPIT4,r11                              ; F10006



; enable interrupts
        movei   #D_FLAGS,r28                                                                                                                                                                                                                                                                                    | Rword1                                |       Mr10                            |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       MWrite
       
        movei   #D_I2SENA|D_TIM1ENA|REGPAGE,r29                 ; I2S+Timer 1                                                                                                                                                                                                   | Rword1                                |       -                                       |       word2word1 > Wr28
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       -
        ;movei  #D_I2SENA|REGPAGE,r29                                   ; I2S only
       
       
        ;movei  #D_TIM1ENA|REGPAGE,r29                                  ; Timer 1 only
        ;movei  #D_TIM2ENA|REGPAGE,r29                                  ; Timer 2 only

        store   r29,(r28)                                                                                                                                                                                                                                                                                               | Rr29  & Rr28                  |       -                                       |       word2word1 > Wr29

DSP_boucle_centrale:
        movei   #DSP_boucle_centrale,R20                                                                                                                                                                                                                                                                | Rword1                                |       Mr28                            |       -
                                                                                                                                                                                                                                                                                                                                        | Rword2                                |       word1                           |       MWrite
        jump    (R20)                                                                                                                                                                                                                                                                                                   | Rr20                                  |       -                                       |       word2word1 > Wr20
        nop                                                                                                                                                                                                                                                                                                                             | -                                             |       WPC                                     |       -
       
       
        .phrase

DSP_frequence_de_replay_reelle_I2S:                                     dc.l                    0
DSP_UN_sur_frequence_de_replay_reelle_I2S:                      dc.l                    0
DSP_parametre_de_frequence_I2S:                                         dc.l                    0

; variables Paula
; channel 0
LSP_DSP_PAULA_AUD0L:                            dc.l                    silence<<nb_bits_virgule_offset                 ; Audio channel 0 location
LSP_DSP_PAULA_AUD0LEN:                          dc.l                    (silence+4)<<nb_bits_virgule_offset                     ; en bytes !
LSP_DSP_PAULA_AUD0PER:                          dc.l                    0                               ; period , a transformer en increment
LSP_DSP_PAULA_AUD0VOL:                          dc.l                    0                               ; volume
LSP_DSP_PAULA_AUD0DAT:                          dc.l                    0                               ; long word en cours d'utilisation / stock� / buffering
LSP_DSP_PAULA_internal_location0:       dc.l                    silence<<nb_bits_virgule_offset                         ; internal register : location of the sample currently played
LSP_DSP_PAULA_internal_increment0:      dc.l                    0                               ; internal register : increment linked to period 16:16
LSP_DSP_PAULA_internal_length0:         dc.l                    (silence+4)<<nb_bits_virgule_offset                     ; internal register : length of the sample currently played
LSP_DSP_repeat_pointeur0:                       dc.l                    silence<<nb_bits_virgule_offset
LSP_DSP_repeat_length0:                         dc.l                    (silence+4)<<nb_bits_virgule_offset
; channel 1
LSP_DSP_PAULA_AUD1L:                            dc.l                    silence<<nb_bits_virgule_offset                 ; Audio channel 0 location
LSP_DSP_PAULA_AUD1LEN:                          dc.l                    (silence+4)<<nb_bits_virgule_offset                     ; en bytes !
LSP_DSP_PAULA_AUD1PER:                          dc.l                    0                               ; period , a transformer en increment
LSP_DSP_PAULA_AUD1VOL:                          dc.l                    0                               ; volume
LSP_DSP_PAULA_AUD1DAT:                          dc.l                    0                               ; long word en cours d'utilisation / stock� / buffering
LSP_DSP_PAULA_internal_location1:       dc.l                    silence<<nb_bits_virgule_offset                         ; internal register : location of the sample currently played
LSP_DSP_PAULA_internal_increment1:      dc.l                    0                               ; internal register : increment linked to period 16:16
LSP_DSP_PAULA_internal_length1:         dc.l                    (silence+4)<<nb_bits_virgule_offset                     ; internal register : length of the sample currently played
LSP_DSP_repeat_pointeur1:                       dc.l                    silence<<nb_bits_virgule_offset
LSP_DSP_repeat_length1:                         dc.l                    (silence+4)<<nb_bits_virgule_offset
; channel 2
LSP_DSP_PAULA_AUD2L:                            dc.l                    silence<<nb_bits_virgule_offset                 ; Audio channel 0 location
LSP_DSP_PAULA_AUD2LEN:                          dc.l                    (silence+4)<<nb_bits_virgule_offset                     ; en bytes !
LSP_DSP_PAULA_AUD2PER:                          dc.l                    0                               ; period , a transformer en increment
LSP_DSP_PAULA_AUD2VOL:                          dc.l                    0                               ; volume
LSP_DSP_PAULA_AUD2DAT:                          dc.l                    0                               ; long word en cours d'utilisation / stock� / buffering
LSP_DSP_PAULA_internal_location2:       dc.l                    silence<<nb_bits_virgule_offset                         ; internal register : location of the sample currently played
LSP_DSP_PAULA_internal_increment2:      dc.l                    0                               ; internal register : increment linked to period 16:16
LSP_DSP_PAULA_internal_length2:         dc.l                    (silence+4)<<nb_bits_virgule_offset                     ; internal register : length of the sample currently played
LSP_DSP_repeat_pointeur2:                       dc.l                    silence<<nb_bits_virgule_offset
LSP_DSP_repeat_length2:                         dc.l                    (silence+4)<<nb_bits_virgule_offset
; channel 3
LSP_DSP_PAULA_AUD3L:                            dc.l                    silence<<nb_bits_virgule_offset                 ; Audio channel 0 location
LSP_DSP_PAULA_AUD3LEN:                          dc.l                    (silence+4)<<nb_bits_virgule_offset                     ; en bytes !
LSP_DSP_PAULA_AUD3PER:                          dc.l                    0                               ; period , a transformer en increment
LSP_DSP_PAULA_AUD3VOL:                          dc.l                    0                               ; volume
LSP_DSP_PAULA_AUD3DAT:                          dc.l                    0                               ; long word en cours d'utilisation / stock� / buffering
LSP_DSP_PAULA_internal_location3:       dc.l                    silence<<nb_bits_virgule_offset                         ; internal register : location of the sample currently played
LSP_DSP_PAULA_internal_increment3:      dc.l                    0                               ; internal register : increment linked to period 16:16
LSP_DSP_PAULA_internal_length3:         dc.l                    (silence+4)<<nb_bits_virgule_offset                     ; internal register : length of the sample currently played
LSP_DSP_repeat_pointeur3:                       dc.l                    silence<<nb_bits_virgule_offset
LSP_DSP_repeat_length3:                         dc.l                    (silence+4)<<nb_bits_virgule_offset


LSPVars:
m_byteStream:           dc.l    0       ;  0 :  byte stream                                                     0
m_wordStream:           dc.l    0       ;  4 :  word stream                                                     1
m_codeTableAddr:        dc.l    0       ;  8 :  code table addr                                         2
m_escCodeRewind:        dc.l    0       ; 12 :  rewind special escape code                      3
m_escCodeSetBpm:        dc.l    0       ; 16 :  set BPM escape code                                     4
m_lspInstruments:       dc.l    0       ; 20 :  LSP instruments table addr                      5
m_relocDone:            dc.l    0       ; 24 :  reloc done flag                                         6
m_currentBpm:           dc.l    0       ; 28 :  current BPM                                                     7
m_byteStreamLoop:       dc.l    0       ; 32 :  byte stream loop point                          8
m_wordStreamLoop:       dc.l    0       ; 36 :  word stream loop point                          9



LSP_BPM_frequence_replay:               dc.l                    25

EDZTMP1:                dc.l                    0

;---------------------
; FIN DE LA RAM DSP
YM_DSP_fin:
;---------------------


SOUND_DRIVER_SIZE                       .equ                    YM_DSP_fin-DSP_base_memoire
        .print  "--- Sound driver code size (DSP): ", /u SOUND_DRIVER_SIZE, " bytes / 8192 ---"


        .68000
                .dphrase
ob_liste_originale:                                      ; This is the label you will use to address this in 68K code
        .objproc                                                           ; Engage the OP assembler
                .dphrase

        .org    ob_list_courante                         ; Tell the OP assembler where the list will execute
;
        branch      VC < 0, .stahp                       ; Branch to the STOP object if VC < 0
        branch      VC > 265, .stahp                     ; Branch to the STOP object if VC > 241
                        ; bitmap data addr, xloc, yloc, dwidth, iwidth, iheight, bpp, pallete idx, flags, firstpix, pitch
        bitmap      ecran1, 16, 26, nb_octets_par_ligne/8, nb_octets_par_ligne/8, 246-26,3
                ;bitmap         ecran1,16,24,40,40,255,3
        jump        .haha
.stahp:
        stop
.haha:
        jump        .stahp
               
                .68000
                .dphrase
fin_ob_liste_originale:


                        .data
        .dphrase

stoplist:               dc.l    0,4

silence:                
                dc.b                    $0,$0,$0,$0
                dc.b                    $0,$0,$0,$0
                dc.b                    $0,$0,$0,$0


debut_ram_libre_DSP:            dc.l                    YM_DSP_fin
debut_ram_libre:                        dc.l                    FIN_RAM
        even

fonte:  
        .include        "fonte1plan.s"
        even

couleur_char:                           dc.w            25
curseur_x:                                      dc.w            0
curseur_y:                                      dc.w            curseur_Y_min
                even
               
chaine_LSP:                                             dc.b    "LSP player for Jaguar",10,0
chaine_playing_LSP:                             dc.b    "Now playing module",10,0
chaine_BPM_init_LSP:                    dc.b    " bpm.",0
chaine_Hz_init_LSP:                             dc.b    " Hz.",10,0
chaine_replay_frequency:                dc.b    "Replay frequency : ",0
chaine_RAM_DSP:                                 dc.b    "DSP RAM available while running : ",0
chaine_entete_debug_module:             dc.b    "location incremen offset   length  ",10,0
chaine_entete_debug_module2:    dc.b    "location length   period   volume",10,0
                even

        .phrase
LSP_module_music_data:
        .incbin                 "elysium.lsmusic"
        ;.incbin                        "LSP/d.lsmusic"
        ;.incbin                        "LSP/k.lsmusic"
        ;.incbin                        "LSP/testsamples4v.lsmusic"
        .phrase
LSP_module_sound_bank:
        .incbin                 "elysium.lsbank"
        ;.incbin                        "LSP/d.lsbank"
        ;.incbin                        "LSP/k.lsbank"
        ;.incbin                        "LSP/testsamples4v.lsbank"
        .phrase

        .bss
        .phrase
DEBUT_BSS:
;EDZ_compteur_reset_offset_entier_voie_A:                       ds.l    1

        .phrase
frequence_Video_Clock:                                  ds.l                            1
frequence_Video_Clock_divisee :                 ds.l                            1



_50ou60hertz:                   ds.l    1
ntsc_flag:                              ds.w    1
a_hdb:                          ds.w   1
a_hde:                          ds.w   1
a_vdb:                          ds.w   1
a_vde:                          ds.w   1
width:                          ds.w   1
height:                         ds.w   1
taille_liste_OP:                ds.l    1
vbl_counter:                    ds.l    1

            .dphrase
ecran1:                         ds.b            320*256                         ; 8 bitplanes
        .phrase
FIN_RAM: