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

0001: ; LSP sur Jaguar
0002: ; version 4 bytes reading at once
0003: ;
0004: ; OK - routine de replay Paula en I2S
0005: ; OK - routine de replay Paula en Timer 1
0006: ; OK - convertir player LSP en Timer 1
0007: ; OK - g�rer le changement de bpm dans le timer 1
0008: ; OK - init : signed 8 bits samples => unsigned 8 bits samples
0009: ; OK - LSP Init : longueur sample en bytes
0010: ; OK - mettre en place la console
0011: ; OK - basculer tout en 21:11 :
0012: ; OK - lire 4 octets par 4 octets de sample / attention � l'alignement du sample, lire les premiers octets en loadb et/ou loadw !
0013: ; - optimiser lecture lsp etc dans Timer 1
0014: 
0015: 
0016: ; - Timer 1 pour gestion LSP
0017: ; - I2S pour replay samples
0018: ;
0019: ; calcul bpm: FRQ=24/(60/bpm)= => 125 bpm=50hz
0020: ;
0021: ; samples Amiga = 8 bits signed PCM
0022: 
0023: ;CC (Carry Clear) = %00100
0024: ;CS (Carry Set)   = %01000
0025: ;EQ (Equal)       = %00010
0026: ;MI (Minus)       = %11000
0027: ;NE (Not Equal)   = %00001
0028: ;PL (Plus)        = %10100
0029: ;HI (Higher)      = %00101
0030: ;T (True)         = %00000
0031: 
0032:     include "jaguar.inc"
0033: 
0034: 
0035: CLEAR_BSS           .equ            1                                   ; 1=efface toute la BSS jusqu'a la fin de la ram utilis�e
0036: LSP_DSP_Audio_frequence                 .equ            45000               ; real hardware needs lower sample frequencies than emulators
0037: nb_bits_virgule_offset                  .equ            10
0038: 
0039: display_infos_debug             .equ            1
0040: DSP_DEBUG                       .equ            0
0041: I2S_during_Timer1               .equ            0                                   ; 0= I2S waits while timer 1 / 1=IMASK cleared while Timer 1
0042: LSP_avancer_module              .equ            1                               ; 1=incremente position dans le module
0043: 
0044: channel_1       .equ        1
0045: channel_2       .equ        1
0046: channel_3       .equ        1
0047: channel_4       .equ        1
0048: 
0049: ; ----------------------------
0050: ; parametres affichage
0051: ;ob_liste_originale         equ     (ENDRAM-$4000)                          ; address of list (shadow)
0052: ob_list_courante            equ     ((ENDRAM-$4000)+$2000)              ; address of read list
0053: nb_octets_par_ligne         equ     320
0054: nb_lignes                   equ     256
0055: 
0056: curseur_Y_min       .equ        8
0057: 
0058: 
0059: DSP_STACK_SIZE  equ 32  ; long words
0060: DSP_USP         equ     (D_ENDRAM-(4*DSP_STACK_SIZE))
0061: DSP_ISP         equ     (DSP_USP-(4*DSP_STACK_SIZE))
0062: 
0063: 
0064: ; DSP
0065: 
0066: 
0067: 
0068: .opt "~Oall"
0069: 
0070: .text
0071: 
0072: 
0073: 
0074:             .68000
0075: 
0076: 
0077:     move.l      #INITSTACK, sp  
0078:     move.w      #%0000011011000111, VMODE           ; 320x256
0079:     move.w      #$100,JOYSTICK
0080: 
0081: ; clear BSS
0082: 
0083:     .if         CLEAR_BSS=1
0084: ; clear BSS
0085:     lea         DEBUT_BSS,a0
0086:     lea         FIN_RAM,a1
0087:     moveq       #0,d0
0088:    
0089: boucle_clean_BSS:
0090:     move.b      d0,(a0)+
0091:     cmp.l       a0,a1
0092:     bne.s       boucle_clean_BSS
0093: ; clear stack
0094:     lea         INITSTACK-100,a0
0095:     lea         INITSTACK,a1
0096:     moveq       #0,d0
0097:    
0098: boucle_clean_BSS2:
0099:     move.b      d0,(a0)+
0100:     cmp.l       a0,a1
0101:     bne.s       boucle_clean_BSS2
0102: 
0103: ; clear object list
0104:     lea         ob_list_courante,a0
0105:     lea         ENDRAM,a1
0106:     moveq       #0,d0
0107:    
0108: boucle_clean_BSS3:
0109:     move.b      d0,(a0)+
0110:     cmp.l       a0,a1
0111:     bne.s       boucle_clean_BSS3
0112:     .endif
0113: 
0114: ;check ntsc ou pal:
0115: 
0116:     moveq       #0,d0
0117:     move.w      JOYBUTS ,d0
0118: 
0119:     move.l      #26593900,frequence_Video_Clock         ; PAL
0120:     move.l      #415530,frequence_Video_Clock_divisee
0121: 
0122:    
0123:     btst        #4,d0
0124:     beq.s       jesuisenpal
0125: jesuisenntsc:
0126:     move.l      #26590906,frequence_Video_Clock         ; NTSC
0127:     move.l      #415483,frequence_Video_Clock_divisee
0128: jesuisenpal:
0129: 
0130: 
0131:     move.l  #0,D_CTRL
0132: ; copie du code DSP dans la RAM DSP
0133: 
0134:     lea     YM_DSP_debut,A0
0135:     lea     D_RAM,A1
0136:     move.l  #YM_DSP_fin-DSP_base_memoire,d0
0137:     lsr.l   #2,d0
0138:     sub.l   #1,D0
0139: boucle_copie_bloc_DSP:
0140:     move.l  (A0)+,(A1)+
0141:     dbf     D0,boucle_copie_bloc_DSP
0142: 
0143: ; init LSP
0144: 
0145:     lea     LSP_module_music_data,a0
0146:     lea     LSP_module_sound_bank,a1
0147:     jsr     LSP_PlayerInit
0148: 
0149: ;       Out :   a0: music BPM pointer (16bits).w
0150: ;               d0: music len in tick count
0151: 
0152:     bsr     InitVideo                   ; Setup our video registers.
0153: 
0154:     jsr     copy_olist                  ; use Blitter to update active list from shadow
0155: 
0156:     move.l  #ob_list_courante,d0                    ; set the object list pointer
0157:     swap    d0
0158:     move.l  d0,OLP
0159: 
0160:     lea     CLUT,a2
0161:     move.l  #255-2,d7
0162:     moveq   #0,d0
0163:    
0164: copie_couleurs:
0165:     move.w  d0,(a2)+
0166:     addq.l  #5,d0
0167:     dbf     d7,copie_couleurs
0168: 
0169:     lea     CLUT+2,a2
0170:     move.w  #$F00F,(a2)+
0171:    
0172:     move.l  #VBL,LEVEL0         ; Install 68K LEVEL0 handler
0173:     move.w  a_vde,d0                    ; Must be ODD
0174:     sub.w   #16,d0
0175:     ori.w   #1,d0
0176:     move.w  d0,VI
0177: 
0178:     move.w  #%01,INT1                   ; Enable video interrupts 11101
0179: 
0180: 
0181:     ;and.w   #%1111100011111111,sr              ; 1111100011111111 => bits 8/9/10 = 0
0182:     and.w   #$f8ff,sr
0183: 
0184: ; CLS
0185:     moveq   #0,d0
0186:     bsr     print_caractere
0187: 
0188: ; init DSP
0189: 
0190:     lea     chaine_LSP,a0
0191:     bsr     print_string
0192: 
0193: 
0194: ; launch DSP
0195: 
0196:     move.l  #REGPAGE,D_FLAGS
0197:     move.l  #DSP_routine_init_DSP,D_PC
0198:     move.l  #DSPGO,D_CTRL
0199:     move.l  #0,vbl_counter
0200: 
0201: 
0202: ; calcul RAM DSP
0203:    
0204:     lea         chaine_RAM_DSP,a0
0205:     bsr         print_string
0206:     move.l      #D_ENDRAM,d0
0207:     sub.l       debut_ram_libre_DSP,d0
0208:     bsr         print_nombre_4_chiffres
0209: ; ligne suivante
0210:     moveq       #10,d0
0211:     bsr         print_caractere
0212: 
0213: 
0214: 
0215: ; on attend le DSP
0216:     moveq   #5,d7
0217: .boucle_attente:
0218:     move.l      vbl_counter,d0
0219: .waitVBL2:
0220:     move.l      vbl_counter,d1
0221:     cmp.l       d0,d1
0222:     beq     .waitVBL2
0223:     dbf     d7,.boucle_attente
0224: 
0225: 
0226:     move.w      #85,couleur_char
0227: 
0228: 
0229: 
0230: 
0231: ; replay frequency
0232:     lea         chaine_replay_frequency,a0
0233:     bsr         print_string
0234: 
0235:     move.l      DSP_frequence_de_replay_reelle_I2S,d0
0236:     bsr         print_nombre_5_chiffres
0237: 
0238:     lea         chaine_Hz_init_LSP,a0
0239:     bsr         print_string
0240: 
0241:     move.w      #145,couleur_char
0242:    
0243:     lea         chaine_playing_LSP,a0
0244:     bsr         print_string
0245:    
0246:     move.w      #245,couleur_char
0247: 
0248:     lea         chaine_entete_debug_module,a0
0249:     bsr         print_string
0250: 
0251: 
0252: 
0253:     .if         display_infos_debug=0
0254: titi:       bra     titi
0255:     .endif
0256: toto:
0257: 
0258: ; affiche les registres internes
0259:     move.l  LSP_DSP_PAULA_internal_location0,d0
0260:     .if     nb_bits_virgule_offset<9
0261:         lsr.l   #nb_bits_virgule_offset,d0
0262:     .else
0263:         lsr.l   #8,d0
0264:         lsr.l   #nb_bits_virgule_offset-8,d0
0265:     .endif
0266:     bsr     print_nombre_hexa_8_chiffres
0267:     move.l  #' ',d0
0268:     bsr     print_caractere
0269:     move.l  LSP_DSP_PAULA_internal_increment0,d0
0270:     bsr     print_nombre_hexa_8_chiffres
0271:     move.l  #' ',d0
0272:     bsr     print_caractere
0273:     move.l  #0,d0
0274:     bsr     print_nombre_hexa_8_chiffres
0275:     move.l  #' ',d0
0276:     bsr     print_caractere
0277:     move.l  LSP_DSP_PAULA_internal_length0,d0
0278:     .if     nb_bits_virgule_offset<9
0279:         lsr.l   #nb_bits_virgule_offset,d0
0280:     .else
0281:         lsr.l   #8,d0
0282:         lsr.l   #nb_bits_virgule_offset-8,d0
0283:     .endif
0284:     bsr     print_nombre_hexa_8_chiffres
0285: 
0286:     ; ligne suivant
0287:     moveq   #10,d0
0288:     bsr     print_caractere
0289: 
0290:     move.l  LSP_DSP_PAULA_internal_location1,d0
0291:     bsr     print_nombre_hexa_8_chiffres
0292:     move.l  #' ',d0
0293:     bsr     print_caractere
0294:     move.l  LSP_DSP_PAULA_internal_increment1,d0
0295:     bsr     print_nombre_hexa_8_chiffres
0296:     move.l  #' ',d0
0297:     bsr     print_caractere
0298:     move.l  #0,d0
0299:     bsr     print_nombre_hexa_8_chiffres
0300:     move.l  #' ',d0
0301:     bsr     print_caractere
0302:     move.l  LSP_DSP_PAULA_internal_length1,d0
0303:     bsr     print_nombre_hexa_8_chiffres
0304: 
0305: 
0306:     ; ligne suivant
0307:     moveq   #10,d0
0308:     bsr     print_caractere
0309: 
0310:     move.l  LSP_DSP_PAULA_internal_location2,d0
0311:     bsr     print_nombre_hexa_8_chiffres
0312:     move.l  #' ',d0
0313:     bsr     print_caractere
0314:     move.l  LSP_DSP_PAULA_internal_increment2,d0
0315:     bsr     print_nombre_hexa_8_chiffres
0316:     move.l  #' ',d0
0317:     bsr     print_caractere
0318:     move.l  #0,d0
0319:     bsr     print_nombre_hexa_8_chiffres
0320:     move.l  #' ',d0
0321:     bsr     print_caractere
0322:     move.l  LSP_DSP_PAULA_internal_length2,d0
0323:     bsr     print_nombre_hexa_8_chiffres
0324: 
0325: 
0326:     ; ligne suivant
0327:     moveq   #10,d0
0328:     bsr     print_caractere
0329: 
0330: 
0331: 
0332:     move.l  LSP_DSP_PAULA_internal_location3,d0
0333:     .if     nb_bits_virgule_offset<9
0334:         lsr.l   #nb_bits_virgule_offset,d0
0335:     .else
0336:         lsr.l   #8,d0
0337:         lsr.l   #nb_bits_virgule_offset-8,d0
0338:     .endif
0339:     bsr     print_nombre_hexa_8_chiffres
0340:     move.l  #' ',d0
0341:     bsr     print_caractere
0342:     move.l  LSP_DSP_PAULA_internal_increment3,d0
0343:     bsr     print_nombre_hexa_8_chiffres
0344:     move.l  #' ',d0
0345:     bsr     print_caractere
0346:     move.l  #0,d0
0347:     bsr     print_nombre_hexa_8_chiffres
0348:     move.l  #' ',d0
0349:     bsr     print_caractere
0350:     move.l  LSP_DSP_PAULA_internal_length3,d0
0351:     .if     nb_bits_virgule_offset<9
0352:         lsr.l   #nb_bits_virgule_offset,d0
0353:     .else
0354:         lsr.l   #8,d0
0355:         lsr.l   #nb_bits_virgule_offset-8,d0
0356:     .endif
0357:     bsr     print_nombre_hexa_8_chiffres
0358: 
0359: 
0360:     ; ligne suivant
0361:     moveq   #10,d0
0362:     bsr     print_caractere
0363: 
0364: ; saute une ligne
0365:     ; ligne suivant
0366:     moveq   #10,d0
0367:     bsr     print_caractere
0368: 
0369: 
0370:     lea         chaine_entete_debug_module2,a0
0371:     bsr         print_string
0372: 
0373: 
0374: ; affiche les registres externes
0375:     move.l  LSP_DSP_PAULA_AUD0L,d0
0376:     bsr     print_nombre_hexa_8_chiffres
0377:     move.l  #' ',d0
0378:     bsr     print_caractere
0379:     move.l  LSP_DSP_PAULA_AUD0LEN,d0
0380:     bsr     print_nombre_hexa_8_chiffres
0381:     move.l  #' ',d0
0382:     bsr     print_caractere
0383:     move.l  LSP_DSP_PAULA_AUD0PER,d0
0384:     bsr     print_nombre_hexa_8_chiffres
0385:     move.l  #' ',d0
0386:     bsr     print_caractere
0387:     move.l  LSP_DSP_PAULA_AUD0VOL,d0
0388:     bsr     print_nombre_hexa_8_chiffres
0389:     ; ligne suivant
0390:     moveq   #10,d0
0391:     bsr     print_caractere
0392: 
0393:     move.l  LSP_DSP_PAULA_AUD1L,d0
0394:     bsr     print_nombre_hexa_8_chiffres
0395:     move.l  #' ',d0
0396:     bsr     print_caractere
0397:     move.l  LSP_DSP_PAULA_AUD1LEN,d0
0398:     bsr     print_nombre_hexa_8_chiffres
0399:     move.l  #' ',d0
0400:     bsr     print_caractere
0401:     move.l  LSP_DSP_PAULA_AUD1PER,d0
0402:     bsr     print_nombre_hexa_8_chiffres
0403:     move.l  #' ',d0
0404:     bsr     print_caractere
0405:     move.l  LSP_DSP_PAULA_AUD1VOL,d0
0406:     bsr     print_nombre_hexa_8_chiffres
0407:     ; ligne suivant
0408:     moveq   #10,d0
0409:     bsr     print_caractere
0410: 
0411:     move.l  LSP_DSP_PAULA_AUD2L,d0
0412:     bsr     print_nombre_hexa_8_chiffres
0413:     move.l  #' ',d0
0414:     bsr     print_caractere
0415:     move.l  LSP_DSP_PAULA_AUD2LEN,d0
0416:     bsr     print_nombre_hexa_8_chiffres
0417:     move.l  #' ',d0
0418:     bsr     print_caractere
0419:     move.l  LSP_DSP_PAULA_AUD2PER,d0
0420:     bsr     print_nombre_hexa_8_chiffres
0421:     move.l  #' ',d0
0422:     bsr     print_caractere
0423:     move.l  LSP_DSP_PAULA_AUD2VOL,d0
0424:     bsr     print_nombre_hexa_8_chiffres
0425:     ; ligne suivant
0426:     moveq   #10,d0
0427:     bsr     print_caractere
0428: 
0429:     move.l  LSP_DSP_PAULA_AUD3L,d0
0430:     .if     nb_bits_virgule_offset<9
0431:         lsr.l   #nb_bits_virgule_offset,d0
0432:     .else
0433:         lsr.l   #8,d0
0434:         lsr.l   #nb_bits_virgule_offset-8,d0
0435:     .endif
0436:     bsr     print_nombre_hexa_8_chiffres
0437:     move.l  #' ',d0
0438:     bsr     print_caractere
0439:     move.l  LSP_DSP_PAULA_AUD3LEN,d0
0440:     .if     nb_bits_virgule_offset<9
0441:         lsr.l   #nb_bits_virgule_offset,d0
0442:     .else
0443:         lsr.l   #8,d0
0444:         lsr.l   #nb_bits_virgule_offset-8,d0
0445:     .endif
0446:     bsr     print_nombre_hexa_8_chiffres
0447:     move.l  #' ',d0
0448:     bsr     print_caractere
0449:     move.l  LSP_DSP_PAULA_AUD3PER,d0
0450:     bsr     print_nombre_hexa_8_chiffres
0451:     move.l  #' ',d0
0452:     bsr     print_caractere
0453:     move.l  LSP_DSP_PAULA_AUD3VOL,d0
0454:     bsr     print_nombre_hexa_8_chiffres
0455:     ; ligne suivant
0456:     moveq   #10,d0
0457:     bsr     print_caractere
0458:     ; ligne suivant
0459:     moveq   #10,d0
0460:     bsr     print_caractere
0461: 
0462: 
0463:     move.l  LSP_DSP_PAULA_AUD0DAT,d0
0464:     bsr     print_nombre_hexa_8_chiffres
0465:     move.l  #' ',d0
0466:     bsr     print_caractere
0467:     move.l  LSP_DSP_PAULA_AUD1DAT,d0
0468:     bsr     print_nombre_hexa_8_chiffres
0469:     move.l  #' ',d0
0470:     bsr     print_caractere
0471:     move.l  LSP_DSP_PAULA_AUD2DAT,d0
0472:     bsr     print_nombre_hexa_8_chiffres
0473:     move.l  #' ',d0
0474:     bsr     print_caractere
0475:     move.l  LSP_DSP_PAULA_AUD3DAT,d0
0476:     bsr     print_nombre_hexa_8_chiffres
0477:     move.l  #' ',d0
0478:     bsr     print_caractere
0479: 
0480:     .rept   11
0481:     ; retour a la ligne  au dessus
0482:     moveq   #8,d0
0483:     bsr     print_caractere
0484:     .endr
0485: 
0486: 
0487:     bra         toto
0488: 
0489:     stop        #$2700
0490: 
0491: 
0492: ;-----------------------------------------------------------------------------------
0493: ;--------------------------
0494: ; VBL
0495: 
0496: VBL:
0497:                 movem.l d0-d7/a0-a6,-(a7)
0498:                
0499:                 .if     display_infos_debug=1
0500:                 ;add.w      #1,BG                   ; debug pour voir si vivant
0501:                 .endif
0502: 
0503:                 jsr     copy_olist                  ; use Blitter to update active list from shadow
0504: 
0505:                 addq.l  #1,vbl_counter
0506: 
0507:                 move.w  #$101,INT1                  ; Signal we're done
0508:                 move.w  #$0,INT2
0509: .exit:
0510:                 movem.l (a7)+,d0-d7/a0-a6
0511:                 rte
0512: 
0513: ; ---------------------------------------
0514: ; imprime une chaine termin�e par un z�ro
0515: ; a0=pointeur sur chaine
0516: print_string:
0517:     movem.l d0-d7/a0-a6,-(a7)  
0518: 
0519: print_string_boucle:
0520:     moveq   #0,d0
0521:     move.b  (a0)+,d0
0522:     cmp.w   #0,d0
0523:     bne.s   print_string_pas_fin_de_chaine
0524:     movem.l (a7)+,d0-d7/a0-a6
0525:     rts
0526: print_string_pas_fin_de_chaine:
0527:     bsr     print_caractere
0528:     bra.s   print_string_boucle
0529: 
0530: ; ---------------------------------------
0531: ; imprime un nombre HEXA de 2 chiffres
0532: print_nombre_hexa_2_chiffres:
0533:     movem.l d0-d7/a0-a6,-(a7)
0534:     lea     convert_hexa,a0
0535:     move.l      d0,d1
0536:     divu        #16,d0
0537:     and.l       #$F,d0          ; limite a 0-15
0538:     move.l      d0,d2
0539:     mulu        #16,d2
0540:     sub.l       d2,d1
0541:     move.b      (a0,d0.w),d0
0542:     bsr         print_caractere
0543:     move.l      d1,d0
0544:     and.l       #$F,d0          ; limite a 0-15
0545:     move.b      (a0,d0.w),d0
0546:     bsr         print_caractere
0547:     movem.l (a7)+,d0-d7/a0-a6
0548:     rts
0549:    
0550: convert_hexa:
0551:     dc.b        48,49,50,51,52,53,54,55,56,57
0552:     dc.b        65,66,67,68,69,70
0553:     even
0554:    
0555: ; ---------------------------------------
0556: ; imprime un nombre de 2 chiffres
0557: print_nombre_2_chiffres:
0558:     movem.l d0-d7/a0-a6,-(a7)
0559:     move.l      d0,d1
0560:     divu        #10,d0
0561:     and.l       #$FF,d0
0562:     move.l      d0,d2
0563:     mulu        #10,d2
0564:     sub.l       d2,d1
0565:     cmp.l       #0,d0
0566:     beq.s       .zap
0567:     add.l       #48,d0
0568:     bsr         print_caractere
0569: .zap:
0570:     move.l      d1,d0
0571:     add.l       #48,d0
0572:     bsr         print_caractere
0573:     movem.l (a7)+,d0-d7/a0-a6
0574:     rts
0575: 
0576: ; ---------------------------------------
0577: ; imprime un nombre de 3 chiffres
0578: print_nombre_3_chiffres:
0579:     movem.l d0-d7/a0-a6,-(a7)
0580:     move.l      d0,d1
0581: 
0582:     divu        #100,d0
0583:     and.l       #$FF,d0
0584:     move.l      d0,d2
0585:     mulu        #100,d2
0586:     sub.l       d2,d1
0587:     cmp.l       #0,d0
0588:     beq.s       .zap
0589:     add.l       #48,d0
0590:     bsr         print_caractere
0591: .zap:
0592:     move.l      d1,d0  
0593:     divu        #10,d0
0594:     and.l       #$FF,d0
0595:     move.l      d0,d2
0596:     mulu        #10,d2
0597:     sub.l       d2,d1
0598:     add.l       #48,d0
0599:     bsr         print_caractere
0600:    
0601:     move.l      d1,d0
0602:     add.l       #48,d0
0603:     bsr         print_caractere
0604:     movem.l (a7)+,d0-d7/a0-a6
0605:     rts
0606: 
0607: 
0608: ; ---------------------------------------
0609: ; imprime un nombre de 2 chiffres , 00
0610: print_nombre_2_chiffres_force:
0611:     movem.l d0-d7/a0-a6,-(a7)
0612:     move.l      d0,d1
0613:     divu        #10,d0
0614:     and.l       #$FF,d0
0615:     move.l      d0,d2
0616:     mulu        #10,d2
0617:     sub.l       d2,d1
0618:     add.l       #48,d0
0619:     bsr         print_caractere
0620:     move.l      d1,d0
0621:     add.l       #48,d0
0622:     bsr         print_caractere
0623:     movem.l (a7)+,d0-d7/a0-a6
0624:     rts
0625: 
0626: ; ---------------------------------------
0627: ; imprime un nombre de 4 chiffres HEXA
0628: print_nombre_hexa_4_chiffres:
0629:     movem.l d0-d7/a0-a6,-(a7)
0630:     move.l      d0,d1
0631:     lea     convert_hexa,a0
0632: 
0633:     divu        #4096,d0
0634:     and.l       #$FF,d0
0635:     move.l      d0,d2
0636:     mulu        #4096,d2
0637:     sub.l       d2,d1
0638:     move.b      (a0,d0.w),d0
0639:     bsr         print_caractere
0640: 
0641:     move.l      d1,d0
0642:     divu        #256,d0
0643:     and.l       #$FF,d0
0644:     move.l      d0,d2
0645:     mulu        #256,d2
0646:     sub.l       d2,d1
0647:     move.b      (a0,d0.w),d0
0648:     bsr         print_caractere
0649: 
0650: 
0651:     move.l      d1,d0
0652:     divu        #16,d0
0653:     and.l       #$FF,d0
0654:     move.l      d0,d2
0655:     mulu        #16,d2
0656:     sub.l       d2,d1
0657:     move.b      (a0,d0.w),d0
0658:     bsr         print_caractere
0659:     move.l      d1,d0
0660:     move.b      (a0,d0.w),d0
0661:     bsr         print_caractere
0662:     movem.l (a7)+,d0-d7/a0-a6
0663:     rts
0664: 
0665: ; ---------------------------------------
0666: ; imprime un nombre de 6 chiffres HEXA ( pour les adresses memoire)
0667: print_nombre_hexa_6_chiffres:
0668:     movem.l d0-d7/a0-a6,-(a7)
0669:    
0670:     move.l      d0,d1
0671:     lea     convert_hexa,a0
0672: 
0673:     move.l      d1,d0
0674:     swap        d0
0675:     and.l       #$F0,d0
0676:     divu        #16,d0
0677:     and.l       #$F,d0
0678:     move.b      (a0,d0.w),d0
0679:     and.l       #$FF,d0
0680:     bsr         print_caractere
0681: 
0682:     move.l      d1,d0
0683:     swap        d0
0684:     and.l       #$F,d0
0685:     move.b      (a0,d0.w),d0
0686:     and.l       #$FF,d0
0687:     bsr         print_caractere
0688: 
0689:     and.l       #$FFFF,d1
0690:     move.l      d1,d0
0691:     divu        #4096,d0
0692:     and.l       #$FF,d0
0693:     move.l      d0,d2
0694:     mulu        #4096,d2
0695:     sub.l       d2,d1
0696:     move.b      (a0,d0.w),d0
0697:     bsr         print_caractere
0698: 
0699:     move.l      d1,d0
0700:     divu        #256,d0
0701:     and.l       #$FF,d0
0702:     move.l      d0,d2
0703:     mulu        #256,d2
0704:     sub.l       d2,d1
0705:     move.b      (a0,d0.w),d0
0706:     bsr         print_caractere
0707: 
0708: 
0709:     move.l      d1,d0
0710:     divu        #16,d0
0711:     and.l       #$FF,d0
0712:     move.l      d0,d2
0713:     mulu        #16,d2
0714:     sub.l       d2,d1
0715:     move.b      (a0,d0.w),d0
0716:     bsr         print_caractere
0717:     move.l      d1,d0
0718:     move.b      (a0,d0.w),d0
0719:     bsr         print_caractere
0720:     movem.l (a7)+,d0-d7/a0-a6
0721:     rts
0722: 
0723: ; ---------------------------------------
0724: ; imprime un nombre de 8 chiffres HEXA ( pour les adresses memoire et les donn�es en 16:16)
0725: print_nombre_hexa_8_chiffres:
0726:     movem.l d0-d7/a0-a6,-(a7)
0727:    
0728:     move.l      d0,d1
0729:     lea     convert_hexa,a0
0730: 
0731:     move.l      d1,d0
0732:     swap        d0
0733:     and.l       #$F000,d0
0734:     divu        #4096,d0
0735:     and.l       #$F,d0
0736:     move.b      (a0,d0.w),d0
0737:     and.l       #$FF,d0
0738:     bsr         print_caractere
0739: 
0740: 
0741: 
0742:     move.l      d1,d0
0743:     swap        d0
0744:     and.l       #$F00,d0
0745:     divu        #256,d0
0746:     and.l       #$F,d0
0747:     move.b      (a0,d0.w),d0
0748:     and.l       #$FF,d0
0749:     bsr         print_caractere
0750: 
0751: 
0752:     move.l      d1,d0
0753:     swap        d0
0754:     and.l       #$F0,d0
0755:     divu        #16,d0
0756:     and.l       #$F,d0
0757:     move.b      (a0,d0.w),d0
0758:     and.l       #$FF,d0
0759:     bsr         print_caractere
0760: 
0761:     move.l      d1,d0
0762:     swap        d0
0763:     and.l       #$F,d0
0764:     move.b      (a0,d0.w),d0
0765:     and.l       #$FF,d0
0766:     bsr         print_caractere
0767: 
0768:     and.l       #$FFFF,d1
0769:     move.l      d1,d0
0770:     divu        #4096,d0
0771:     and.l       #$FF,d0
0772:     move.l      d0,d2
0773:     mulu        #4096,d2
0774:     sub.l       d2,d1
0775:     move.b      (a0,d0.w),d0
0776:     bsr         print_caractere
0777: 
0778:     move.l      d1,d0
0779:     divu        #256,d0
0780:     and.l       #$FF,d0
0781:     move.l      d0,d2
0782:     mulu        #256,d2
0783:     sub.l       d2,d1
0784:     move.b      (a0,d0.w),d0
0785:     bsr         print_caractere
0786: 
0787: 
0788:     move.l      d1,d0
0789:     divu        #16,d0
0790:     and.l       #$FF,d0
0791:     move.l      d0,d2
0792:     mulu        #16,d2
0793:     sub.l       d2,d1
0794:     move.b      (a0,d0.w),d0
0795:     bsr         print_caractere
0796:     move.l      d1,d0
0797:     move.b      (a0,d0.w),d0
0798:     bsr         print_caractere
0799:     movem.l (a7)+,d0-d7/a0-a6
0800:     rts
0801: 
0802: 
0803: ; ---------------------------------------
0804: ; imprime un nombre de 4 chiffres
0805: print_nombre_4_chiffres:
0806:     movem.l d0-d7/a0-a6,-(a7)
0807:     move.l      d0,d1
0808: 
0809:     divu        #1000,d0
0810:     and.l       #$FF,d0
0811:     move.l      d0,d2
0812:     mulu        #1000,d2
0813:     sub.l       d2,d1
0814:     add.l       #48,d0
0815:     bsr         print_caractere
0816: 
0817:     move.l      d1,d0
0818:     divu        #100,d0
0819:     and.l       #$FF,d0
0820:     move.l      d0,d2
0821:     mulu        #100,d2
0822:     sub.l       d2,d1
0823:     add.l       #48,d0
0824:     bsr         print_caractere
0825: 
0826: 
0827:     move.l      d1,d0
0828:     divu        #10,d0
0829:     and.l       #$FF,d0
0830:     move.l      d0,d2
0831:     mulu        #10,d2
0832:     sub.l       d2,d1
0833:     add.l       #48,d0
0834:     bsr         print_caractere
0835:     move.l      d1,d0
0836:     add.l       #48,d0
0837:     bsr         print_caractere
0838:     movem.l (a7)+,d0-d7/a0-a6
0839:     rts
0840: 
0841: ; ---------------------------------------
0842: ; imprime un nombre de 5 chiffres
0843: print_nombre_5_chiffres:
0844:     movem.l d0-d7/a0-a6,-(a7)
0845:     move.l      d0,d1
0846: 
0847:     divu        #10000,d0
0848:     and.l       #$FF,d0
0849:     move.l      d0,d2
0850:     mulu        #10000,d2
0851:     sub.l       d2,d1
0852:     add.l       #48,d0
0853:     bsr         print_caractere
0854: 
0855:     move.l      d1,d0
0856:     divu        #1000,d0
0857:     and.l       #$FF,d0
0858:     move.l      d0,d2
0859:     mulu        #1000,d2
0860:     sub.l       d2,d1
0861:     add.l       #48,d0
0862:     bsr         print_caractere
0863: 
0864:     move.l      d1,d0
0865:     divu        #100,d0
0866:     and.l       #$FF,d0
0867:     move.l      d0,d2
0868:     mulu        #100,d2
0869:     sub.l       d2,d1
0870:     add.l       #48,d0
0871:     bsr         print_caractere
0872: 
0873: 
0874:     move.l      d1,d0
0875:     divu        #10,d0
0876:     and.l       #$FF,d0
0877:     move.l      d0,d2
0878:     mulu        #10,d2
0879:     sub.l       d2,d1
0880:     add.l       #48,d0
0881:     bsr         print_caractere
0882:     move.l      d1,d0
0883:     add.l       #48,d0
0884:     bsr         print_caractere
0885:     movem.l (a7)+,d0-d7/a0-a6
0886:     rts
0887: 
0888: 
0889: ; -----------------------------
0890: ; copie un caractere a l ecran
0891: ; d0.w=caractere
0892: 
0893: print_caractere:
0894:     movem.l d0-d7/a0-a6,-(a7)
0895: 
0896: 
0897: 
0898:     cmp.b   #00,d0
0899:     bne.s   print_caractere_pas_CLS
0900:     move.l  #ecran1,A1_BASE         ; = DEST
0901:     move.l  #$0,A1_PIXEL
0902:     move.l  #PIXEL16|XADDPHR|PITCH1,A1_FLAGS
0903:     move.l  #ecran1+320*100,A2_BASE         ; = source
0904:     move.l  #$0,A2_PIXEL
0905:     move.l  #PIXEL16|XADDPHR|PITCH1,A2_FLAGS
0906:    
0907:     move.w  #$00,B_PATD
0908:    
0909: 
0910:     moveq   #0,d0
0911:     move.w  #nb_octets_par_ligne,d0
0912:     lsr.w   #1,d0
0913:     move.w  #nb_lignes,d1
0914:     mulu    d1,d0
0915:     swap    d0
0916:     move.w  #1,d0
0917:     swap    d0
0918:     ;move.w #65535,d0
0919:     move.l  d0,B_COUNT
0920:     move.l  #LFU_REPLACE|SRCEN|PATDSEL,B_CMD
0921: 
0922: 
0923:     movem.l (a7)+,d0-d7/a0-a6
0924:     rts
0925:    
0926: print_caractere_pas_CLS:
0927: 
0928:     cmp.b   #10,d0
0929:     bne.s   print_caractere_pas_retourchariot
0930:     move.w  #0,curseur_x
0931:     add.w   #8,curseur_y
0932:     movem.l (a7)+,d0-d7/a0-a6
0933:     rts
0934: 
0935: print_caractere_pas_retourchariot:
0936:     cmp.b   #09,d0
0937:     bne.s   print_caractere_pas_retourdebutligne
0938:     move.w  #0,curseur_x
0939:     movem.l (a7)+,d0-d7/a0-a6
0940:     rts
0941: 
0942: print_caractere_pas_retourdebutligne:
0943:     cmp.b   #08,d0
0944:     bne.s   print_caractere_pas_retourdebutligneaudessus
0945:     move.w  #0,curseur_x
0946:     sub.w   #8,curseur_y
0947:     movem.l (a7)+,d0-d7/a0-a6
0948:     rts
0949: 
0950: 
0951: print_caractere_pas_retourdebutligneaudessus:
0952: 
0953:     lea     ecran1,a1
0954:     moveq   #0,d1
0955:     move.w  curseur_x,d1
0956:     add.l   d1,a1
0957:     moveq   #0,d1
0958:     move.w  curseur_y,d1
0959:     mulu    #nb_octets_par_ligne,d1
0960:     add.l   d1,a1
0961: 
0962:     lsl.l   #3,d0       ; * 8
0963:     lea     fonte,a0
0964:     add.l   d0,a0
0965:    
0966:    
0967: ; copie 1 lettre
0968:     move.l  #8-1,d0
0969: copieC_ligne:
0970:     moveq   #8-1,d1
0971:     move.b  (a0)+,d2
0972: copieC_colonne:
0973:     moveq   #0,d4
0974:     btst    d1,d2
0975:     beq.s   pixel_a_zero
0976:     moveq   #0,d4
0977:     move.w  couleur_char,d4
0978: pixel_a_zero:
0979:     move.b  d4,(a1)+
0980:     dbf     d1,copieC_colonne
0981:     lea     nb_octets_par_ligne-8(a1),a1
0982:     dbf     d0,copieC_ligne
0983: 
0984:     move.w  curseur_x,d0
0985:     add.w   #8,d0
0986:     cmp.w   #320,d0
0987:     blt     curseur_pas_fin_de_ligne
0988:     moveq   #0,d0
0989:     add.w   #8,curseur_y
0990: curseur_pas_fin_de_ligne:
0991:     move.w  d0,curseur_x
0992: 
0993:     movem.l (a7)+,d0-d7/a0-a6
0994: 
0995:     rts
0996: 
0997: 
0998: ;----------------------------------
0999: ; recopie l'object list dans la courante
1000: 
1001: copy_olist:
1002:                 move.l  #ob_list_courante,A1_BASE           ; = DEST
1003:                 move.l  #$0,A1_PIXEL
1004:                 move.l  #PIXEL16|XADDPHR|PITCH1,A1_FLAGS
1005:                 move.l  #ob_liste_originale,A2_BASE         ; = source
1006:                 move.l  #$0,A2_PIXEL
1007:                 move.l  #PIXEL16|XADDPHR|PITCH1,A2_FLAGS
1008:                 move.w  #1,d0
1009:                 swap    d0
1010:                 move.l  #fin_ob_liste_originale-ob_liste_originale,d1
1011:                 move.w  d1,d0
1012:                 move.l  d0,B_COUNT
1013:                 move.l  #LFU_REPLACE|SRCEN,B_CMD
1014:                 rts
1015: 
1016: 
1017:     .if         1=0
1018: ; ---------------------------------------
1019: ; allocation de m�moire
1020: ; malloc de d0, retour avec  un pointeur dans d0
1021: ; ---------------------------------------
1022: 
1023: YM_malloc:
1024: 
1025:     movem.l     d1-d3/a0,-(sp)
1026: 
1027:     move.l      debut_ram_libre,d1
1028:     move.l      d1,a0
1029:     move.l      d1,d3
1030: ; arrondit multiple de 2
1031:     btst        #0,d0
1032:     beq.s       YM_malloc_pas_d_arrondi
1033:     addq.l      #1,d0
1034: YM_malloc_pas_d_arrondi:
1035:     add.l       d0,d1
1036:     move.l      d1,debut_ram_libre
1037:    
1038:     move.l      d0,d2
1039:     subq.l      #1,d2
1040:     moveq.l     #0,d0
1041: 
1042: YM_malloc_boucle_clean_ram:
1043:     move.b      d0,(a0)+
1044:     dbf         d2,YM_malloc_boucle_clean_ram
1045:    
1046:     move.l      d3,d0
1047: 
1048:     movem.l     (sp)+,d1-d3/a0
1049:     rts
1050: 
1051: ; ---------------------------------------
1052: ; allocation de m�moire version RAM DSP
1053: ; malloc de d0, retour avec  un pointeur dans d0
1054: ; d0 => forc�ment un multiple de 4
1055: ; ---------------------------------------
1056: 
1057: YM_malloc_DSP:
1058: 
1059:     movem.l     d1-d3/a0,-(sp)
1060: 
1061:     move.l      debut_ram_libre_DSP,d1
1062:     move.l      d1,a0
1063:     move.l      d1,d3
1064:     add.l       d0,d1
1065:     move.l      d1,debut_ram_libre_DSP
1066:    
1067:     move.l      d0,d2
1068:     moveq.l     #0,d0
1069:     lsr.l       #2,d2       ; 4 octets par 4 octets
1070:     subq.l      #1,d2
1071: 
1072: YM_malloc_boucle_clean_ram_DSP:
1073:     move.l      d0,(a0)+
1074:     dbf         d2,YM_malloc_boucle_clean_ram_DSP
1075:    
1076:     move.l      d3,d0
1077: 
1078:     movem.l     (sp)+,d1-d3/a0
1079:     rts
1080: 
1081: 
1082:     .endif
1083: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
1084: ;;
1085: ;; Procedure: InitVideo (same as in vidinit.s)
1086: ;;            Build values for hdb, hde, vdb, and vde and store them.
1087: ;;
1088: 
1089: InitVideo:
1090:                 movem.l d0-d6,-(sp)
1091: 
1092:                
1093:                 move.w  #-1,ntsc_flag
1094:                 move.l  #50,_50ou60hertz
1095:    
1096:                 move.w  CONFIG,d0                ; Also is joystick register
1097:                 andi.w  #VIDTYPE,d0              ; 0 = PAL, 1 = NTSC
1098:                 beq     .palvals
1099:                 move.w  #1,ntsc_flag
1100:                 move.l  #60,_50ou60hertz
1101:    
1102: 
1103: .ntscvals:      move.w  #NTSC_HMID,d2
1104:                 move.w  #NTSC_WIDTH,d0
1105: 
1106:                 move.w  #NTSC_VMID,d6
1107:                 move.w  #NTSC_HEIGHT,d4
1108:                
1109:                 bra     calc_vals
1110: .palvals:
1111:                 move.w #PAL_HMID,d2
1112:                 move.w #PAL_WIDTH,d0
1113: 
1114:                 move.w #PAL_VMID,d6            
1115:                 move.w #PAL_HEIGHT,d4
1116: 
1117:                
1118: calc_vals:      
1119:                 move.w  d0,width
1120:                 move.w  d4,height
1121:                 move.w  d0,d1
1122:                 asr     #1,d1                   ; Width/2
1123:                 sub.w   d1,d2                   ; Mid - Width/2
1124:                 add.w   #4,d2                   ; (Mid - Width/2)+4
1125:                 sub.w   #1,d1                   ; Width/2 - 1
1126:                 ori.w   #$400,d1                ; (Width/2 - 1)|$400
1127:                 move.w  d1,a_hde
1128:                 move.w  d1,HDE
1129:                 move.w  d2,a_hdb
1130:                 move.w  d2,HDB1
1131:                 move.w  d2,HDB2
1132:                 move.w  d6,d5
1133:                 sub.w   d4,d5
1134:                 add.w   #16,d5
1135:                 move.w  d5,a_vdb
1136:                 add.w   d4,d6
1137:                 move.w  d6,a_vde
1138:            
1139:                 move.w  a_vdb,VDB
1140:                 move.w  a_vde,VDE    
1141:                
1142:                
1143:                 move.l  #0,BORD1                ; Black border
1144:                 move.w  #0,BG                   ; Init line buffer to black
1145:                 movem.l (sp)+,d0-d6
1146:                 rts
1147: 
1148: ; ------------------------------------
1149: ;          LSP
1150: ; ------------------------------------
1151: 
1152: 
1153: ; ------------------------------------
1154: ; Init
1155: 
1156: LSP_PlayerInit:
1157: ; a0: music data (any mem)
1158: ; a1: sound bank data (chip mem)
1159: ; (a2: 16bit DMACON word address)
1160: 
1161: ;       Out:a0: music BPM pointer (16bits)
1162: ;           d0: music len in tick count
1163: 
1164: 
1165:             cmpi.l      #'LSP1',(a0)+
1166:             bne         .dataError
1167:             move.l      (a0)+,d0        ; unique id
1168:             cmp.l       (a1),d0         ; check that sample bank is this one
1169:             bne         .dataError
1170: 
1171:             lea         LSPVars,a3
1172:             cmpi.w      #$0105,(a0)+            ; minimal major & minor version of latest compatible LSPConvert.exe      = V 1.05
1173:             blt         .dataError
1174: 
1175:             moveq       #0,d6
1176:             move.w      (a0)+,d6
1177:             move.l      d6,m_currentBpm-LSPVars(a3)     ; default BPM
1178:             move.l      d6,LSP_BPM_frequence_replay
1179:             move.w      (a0)+,d6
1180:             move.l      d6,m_escCodeRewind-LSPVars(a3)      ; tout en .L
1181:             move.w      (a0)+,d6
1182:             move.l      d6,m_escCodeSetBpm-LSPVars(a3)
1183:             move.l      (a0)+,-(a7)
1184:             ;move.l a2,m_dmaconPatch(a3)
1185:             ;move.w #$8000,-1(a2)           ; Be sure DMACon word is $8000 (note: a2 should be ODD address)
1186:             moveq       #0,d0
1187:             move.w      (a0)+,d0                ; instrument count
1188:             lea         -12(a0),a2              ; LSP data has -12 offset on instrument tab ( to win 2 cycles in fast player :) )
1189:             move.l      a2,m_lspInstruments-LSPVars(a3) ; instrument tab addr ( minus 4 )
1190:             subq.w      #1,d0
1191:             move.l      a1,d1
1192: 
1193: .relocLoop:
1194:             ;bset.b     #0,3(a0)                ; bit0 is relocation done flag
1195:             ;bne.s      .relocated
1196:            
1197:             move.l      (a0),d6                 ; pointeur sample
1198:             add.l       d1,d6                   ; passage de relatif en absolu
1199:             ;lsl.l      #nb_bits_virgule_offset,d6
1200:             move.l      d6,(a0)                 ; pointeur sample
1201: 
1202:            
1203:             moveq       #0,d6
1204:             move.w      4(a0),d6                ; taille en words
1205:             add.w       d6,d6
1206:             move.w      d6,4(a0)                ; taille en bytes
1207: 
1208:             move.l      (a0),a4                
1209:             bsr.s       LSP_unsigne_sample      ; A4=sample location / d6=length
1210: 
1211: 
1212:             move.l      6(a0),d6                    ; pointeur sample repeat
1213:             add.l       d1,d6                   ; passage de relatif en absolu
1214:             ;lsl.l      #nb_bits_virgule_offset,d6
1215:             move.l      d6,6(a0)                    ; pointeur sample repeat
1216:            
1217:             moveq       #0,d6
1218:             move.w      10(a0),d6               ; taille repeat en words
1219:             add.w       d6,d6
1220:             move.w      d6,10(a0)               ; taille repeat en bytes
1221: 
1222: .relocated:
1223:             lea         12(a0),a0
1224:             dbf         d0,.relocLoop
1225:        
1226:             move.w      (a0)+,d0                ; codes count (+2)
1227:             move.l      a0,m_codeTableAddr-LSPVars(a3)  ; code table
1228:             add.w       d0,d0
1229:             add.w       d0,a0
1230:             move.l      (a0)+,d0                ; word stream size
1231:             move.l      (a0)+,d1                ; byte stream loop point
1232:             move.l      (a0)+,d2                ; word stream loop point
1233: 
1234:             move.l      a0,m_wordStream-LSPVars(a3)
1235:             lea         0(a0,d0.l),a1           ; byte stream
1236:             move.l      a1,m_byteStream-LSPVars(a3)
1237:             add.l       d2,a0
1238:             add.l       d1,a1
1239:             move.l      a0,m_wordStreamLoop-LSPVars(a3)
1240:             move.l      a1,m_byteStreamLoop-LSPVars(a3)
1241:             ;bset.b     #1,$bfe001              ; disabling this fucking Low pass filter!!
1242:             lea         m_currentBpm-LSPVars(a3),a0
1243:             move.l      (a7)+,d0                ; music len in frame ticks
1244:             rts
1245: 
1246: .dataError: illegal
1247: 
1248: LSP_unsigne_sample:
1249: ; A4=sample location / d6=length
1250:     movem.l     d0/d6/a4,-(sp)
1251:     subq.l      #1,d6
1252:     cmp.l       #0,d6
1253:     blt.s       .quit
1254: .boucle:
1255:     move.b      (a4),d0             ; -128 to 127
1256:     sub.b       #$80,d0
1257:     move.b      d0,(a4)+
1258:     dbf         d6,.boucle
1259: 
1260: .quit:
1261:     movem.l     (sp)+,d0/d6/a4
1262:     rts
1263: 
1264:    
1265:    
1266:     .text
1267:    
1268: ;-------------------------------------
1269: ;
1270: ;     DSP
1271: ;
1272: ;-------------------------------------
1273: 
1274:     .phrase
1275: YM_DSP_debut:
1276: 
1277:     .dsp
1278:     .org    D_RAM
1279: DSP_base_memoire:
1280: 
1281: ; CPU interrupt
1282:     .rept   8
1283:         nop
1284:     .endr
1285:                                                                                                                                                                     |-----------------------|-----------------------|--------------------------
1286:                                                                                                                                                                     |   Cycle1  (read regs) |   Cycle2  (compute)   |   Cycle3 (writeback)
1287:                                                                                                                                                                     |-----------------------|-----------------------|--------------------------
1288: ; I2S interrupt
1289:     movei   #DSP_LSP_routine_interruption_I2S,r28                       ; 6 octets                                                                                  | Rword1                |   -                   |   -
1290:                                                                                                                                                                     | Rword2                | word1                 |   -
1291:     movei   #D_FLAGS,r30                                            ; 6 octets                                                                                      | Rword1                |   -                   | word2word1 > Wr28
1292:                                                                                                                                                                     | Rword2                | word1                 |   -
1293:     jump    (r28)                                                   ; 2 octets                                                                                      | Rr28                  |   -                   | word2word1 > Wr30
1294:     load    (r30),r29   ; read flags                                ; 2 octets = 16 octets                                                                          | Rr30                  | r28 > WPC             |   -
1295:                                                                                                                                                                     |   -                   | Read FLAGS            |   -
1296:                                                                                                                                                                     |   (new instruction)   |   -                   | Flags > Wr29
1297: ; Timer 1 interrupt
1298:     movei   #DSP_LSP_routine_interruption_Timer1,r12                        ; 6 octets                                                                              | Rword1                |   -                   |   -
1299:                                                                                                                                                                     | Rword2                | word1                 |   -
1300:     movei   #D_FLAGS,r16                                            ; 6 octets                                                                                      | Rword1                |   -                   | word2word1 > Wr12
1301:                                                                                                                                                                     | Rword2                | word1                 |   -
1302:     jump    (r12)                                                   ; 2 octets                                                                                      | Rr12                  |   -                   | word2word1 > Wr16
1303:     load    (r16),r13   ; read flags                                ; 2 octets = 16 octets                                                                          | Rr16                  | r12 > WPC             |   -
1304:                                                                                                                                                                     |   -                   | Read FLAGS            |   -
1305:                                                                                                                                                                     |   (new instruction)   |   -                   | Flags > Wr13
1306: ; Timer 2 interrupt
1307:     movei   #DSP_LSP_routine_interruption_Timer2,r28                        ; 6 octets                                                                              | Rword1                |   -                   |   -
1308:                                                                                                                                                                     | Rword2                | word1                 |   -
1309:     movei   #D_FLAGS,r30                                            ; 6 octets                                                                                      | Rword1                |   -                   | word2&word1 > Wr28
1310:                                                                                                                                                                     | Rword2                | word1                 |   -
1311:     jump    (r28)                                                   ; 2 octets                                                                                      | Rflags    & Rr28      |   -                   | word2&word1 > Wr30
1312:     load    (r30),r29   ; read flags                                ; 2 octets = 16 octets                                                                          | Rr30                  | r28 > WPC             |   -
1313:                                                                                                                                                                     |   -                   | Read FLAGS            |   -
1314:                                                                                                                                                                     |   (new instruction)   |   -                   | Flags > Wr29
1315: ; External 0 interrupt
1316:     .rept   8
1317:         nop
1318:     .endr
1319: ; External 1 interrupt
1320:     .rept   8
1321:         nop
1322:     .endr
1323: 
1324: 
1325: 
1326: 
1327: 
1328: 
1329: 
1330: 
1331: 
1332: 
1333: 
1334: 
1335: 
1336: ; -------------------------------
1337: ; DSP : routines en interruption
1338: ; -------------------------------
1339: ; utilis�s :    R29/R30/R31
1340: ;               R18/R19/R20/R21 /R22/R23/R24/R25/R26/R27/R28
1341: 
1342: 
1343: ; I2S : replay sample
1344: ;   - version simple, lit un octet � chaque fois
1345: ;   - puis version plus compleque : lit 1 long, et utilise ses octets
1346: DSP_LSP_routine_interruption_I2S:
1347: 
1348:     .if     DSP_DEBUG
1349: ; change la couleur du fond
1350:     movei   #$777,R26                                                                                                                                               | Rword1                |   -                   |   -
1351:                                                                                                                                                                     | Rword2                |   word1               |   -
1352:     movei   #BG,r27                                                                                                                                                 | Rword1                |   -                   |   word2word1 > Wr26
1353:                                                                                                                                                                     | Rword2                |   word1               |   -
1354:     storew  r26,(r27)                                                                                                                                               | Rr26  & Rr27          |   -                   |   word2word1 > Wr27
1355:     .endif
1356: 
1357: 
1358: ; version complexe avec stockage de 4 octets
1359: ; channel 3
1360:         movei       #LSP_DSP_PAULA_internal_location3,R28                       ; adresse sample actuelle, a virgule                                                | Rword1                |   -                   |   -
1361:                                                                                                                                                                     | Rword2                |   word1               |   -
1362:         movei       #LSP_DSP_PAULA_internal_increment3,R27                                                                                                          | Rword1                |   -                   |   word2word1 > Wr28
1363:                                                                                                                                                                     | Rword2                |   word1               |   -
1364:         load        (R28),R26                                       ; R26=current pointeur sample 16:16                                                             | Rr28                  |   -                   |   word2word1 > Wr27
1365:         load        (R27),R27                                       ; R27=increment 16:16                                                                           | Rr27                  |   Mr28                |   -
1366:                                                                                                                                                                     | -                     |   Mr27                |   Wr26
1367:         move        R26,R17                                         ; R17 = pointeur sample a virgule avant increment                                               | Rr26                  |   -                   |   Wr27
1368:         movei       #LSP_DSP_PAULA_internal_length3,R25             ; =FIN                                                                                          | Rword1                |   -                   |   Wr17
1369:                                                                                                                                                                     | Rword2                |   word1               |   -
1370:                                                                                                                                                                     | -                     |   -                   |   word2word1 > Wr25
1371:         add         R27,R26                                         ; R26=adresse+increment , a virgule                                                             | Rr27  & Rr26          |   -                   |   -
1372:         load        (R25),R23                                                                                                                                       | Rr25                  |   Cr26                |   -
1373:         movei       #$FFFFFFFC,R22                                                                                                                                  | Rword1                |   Mr25                |   Wr26
1374:                                                                                                                                                                     | Rword2                |   word1               |   Wr23
1375:                                                                                                                                                                     | -                     |   -                   |   word2word1 > Wr22
1376:         cmp         R23,R26                                                                                                                                         | Rr23  & Rr26          |   -                   |   -
1377:                                                                                                                                                                     | -                     |   Cflags              |   -
1378:         jr          mi,DSP_LSP_routine_interruption_I2S_pas_fin_de_sample_channel3                                                                                  | Rflags                |   -                   |   Wflags
1379:         nop                                                                                                                                                         | -                     |   ? > WPC             |   -
1380: ; fin de sample => on recharge les infos des registres externes
1381:         shlq        #32-nb_bits_virgule_offset,R26                                                                                                                  | Rr26                  |   -                   |   -
1382:         movei       #LSP_DSP_PAULA_AUD3LEN,R27          ; fin, a virgule                                                                                            | Rword1                |   Cr26                |   -
1383:                                                                                                                                                                     | Rword2                |   word1               |   Wr26
1384:         shrq        #32-nb_bits_virgule_offset,R26      ; on ne garde que la virgule                                                                                | Rr26                  |   -                   |   word2word1 > Wr27
1385:         movei       #LSP_DSP_PAULA_AUD3L,R24            ; sample location a virgule                                                                                 | Rword1                |   Cr26                |   -
1386:                                                                                                                                                                     | Rword2                |   word1               |   Wr26
1387:         load        (R27),R27                                                                                                                                       | Rr27                  |   -                   |   word2word1 > Wr24
1388:         load        (R24),R23                                                                                                                                       | Rr24                  |   Mr27                |   -
1389:         store       R27,(R25)                           ; update internal sample end, a virgule                                                                     | Rr27  & Rr25          |   Mr24                |   Wr27
1390:         or          R23,R26                             ; on garde la virgule en cours                                                                              | Rr23  & Rr26          |   Mr25                |   Wr23
1391:                                                                                                                                                                     | -                     |   Cr26                |   MWrite
1392: DSP_LSP_routine_interruption_I2S_pas_fin_de_sample_channel3:
1393:         store       R26,(R28)                           ; stocke internal sample pointeur, a virgule                                                                | Rr26  & Rr28          |   -                   |   Wr26
1394:         shrq        #nb_bits_virgule_offset,R26                             ; nouveau pointeur adresse sample partie entiere                                        | Rr26                  |   Mr28                |   -
1395:         shrq        #nb_bits_virgule_offset,R17                             ; ancien pointeur adresse sample partie entiere                                         | Rr17                  |   Cr26                |   MWrite
1396:                                                                                                                                                                     | -                     |   Cr17                |   Wr26
1397:         move        R26,R25                             ; R25 = nouveau pointeur sample                                                                             | Rr26                  |   -                   |   Wr17
1398:                                                                                                                                                                     | -                     |   -                   |   Wr25
1399:         and         R22,R17                             ; ancien pointeur sample modulo 4                                                                           | Rr22  & Rr17          |   -                   |   -
1400:         and         R22,R26                             ; nouveau pointeur sample modulo 4                                                                          | Rr22  & Rr26          |   Cr17                |   -
1401:         movei       #LSP_DSP_PAULA_AUD3DAT,R28          ; 4 octets actuels                                                                                          | Rword1                |   Cr26                |   Wr17
1402:                                                                                                                                                                     | Rword2                |   word1               |   Wr26
1403:         not         R22                                 ; => %11                                                                                                    | Rr22                  |   -                   |   word2word1 > Wr28
1404:         load        (R28),R21                           ; R21 = octets actuels en stock                                                                             | Rr28                  |   Cr22                |   -
1405:         and         R22,R25                             ; R25 = position octet � lire                                                                               | Rr22                  |   Mr28                |   Wr22
1406:                                                                                                                                                                     | -                     |   Cr25                |   Wr21
1407:                                                                                                                                                                     | -                     |   -                   |   Wr25
1408:         cmp         R17,R26                                                                                                                                         | Rr17  & Rr26          |   -                   |   -
1409:                                                                                                                                                                     | -                     |   Cflags              |   -
1410:         jr          eq,DSP_LSP_routine_interruption_I2S_pas_nouveau_long_word3                                                                                      | Rflags                |   -                   |   Wflags
1411:         nop                                                                                                                                                         | -                     |   ? > WPC             |   -
1412: ; il faut rafraichir R21
1413:         load        (R26),R21                           ; lit 4 nouveaux octets de sample                                                                           | Rr26                  |   -                   |   -
1414:                                                                                                                                                                     | -                     |   Mr26                |   -
1415:         store       R21,(R28)                           ; rafraichit le stockage des 4 octets                                                                       | Rr21  & Rr28          |   -                   |   Wr21
1416: 
1417: DSP_LSP_routine_interruption_I2S_pas_nouveau_long_word3:
1418:         shlq        #3,R25                  ; numero d'octet � lire * 8                                                                                             | Rr25                  |   Mr28                |   -
1419:         movei       #LSP_DSP_PAULA_AUD3VOL,R23                                                                                                                      | Rword1                |   Cr25                |   Mwrite
1420:                                                                                                                                                                     | Rword2                |   word1               |   Wr25
1421:         neg         R25                                 ; -0 -8 -16 -24                                                                                             | Rr25                  |   -                   |   word2word1 > Wr23
1422:                                                                                                                                                                     | -                     |   Cr25                |   -
1423: ; R25=numero d'octet � lire
1424:         sh          R25,R21                             ; shift les 4 octets en stock vers la gauche, pour positionner l'octet � lire en haut                       | Rr25  & Rr21          |   -                   |   Wr25
1425:         load        (R23),R23                           ; R23 = volume : 6 bits                                                                                     | Rr23                  |   Cr21                |   -
1426:         shrq        #24,R21                             ; descends l'octet � lire                                                                                   | Rr21                  |   Mr23                |   Wr21
1427:                                                                                                                                                                     | -                     |   Cr21                |   Wr23
1428:         mult        R23,R21                             ; unsigned multiplication : unsigned sample * volume => 8bits + 6 bits = 14 bits                            | Rr23  & Rr21          |   -                   |   Wr21
1429: 
1430: ; R21=sample channel 3 on 14 bits
1431: 
1432: ; channel 2
1433:         movei       #LSP_DSP_PAULA_internal_location2,R28                       ; adresse sample actuelle, a virgule                                                | Rword1                |   Cr21                |   -
1434:                                                                                                                                                                     | Rword2                |   word1               |   Wr21
1435:         movei       #LSP_DSP_PAULA_internal_increment2,R27                                                                                                          | Rword1                |   -                   |   word2word1 > Wr28
1436:                                                                                                                                                                     | Rword2                |   word1               |   -
1437:         load        (R28),R26                                       ; R26=current pointeur sample 16:16                                                             | Rr28                  |   -                   |   word2word1 > Wr27
1438:         load        (R27),R27                                       ; R27=increment 16:16                                                                           | Rr27                  |   Mr28                |   -
1439:                                                                                                                                                                     | -                     |   Mr27                |   Wr26
1440:         move        R26,R17                                         ; R17 = pointeur sample a virgule avant increment                                               | Rr26                  |   -                   |   Wr27
1441:         movei       #LSP_DSP_PAULA_internal_length2,R25             ; =FIN                                                                                          | Rword1                |   -                   |   Wr17
1442:                                                                                                                                                                     | Rword2                |   word1               |   -
1443:                                                                                                                                                                     | -                     |   -                   |   word2word1 > Wr25
1444:         add         R27,R26                                         ; R26=adresse+increment , a virgule                                                             | Rr27  & Rr26          |   -                   |   -
1445:         load        (R25),R23                                                                                                                                       | Rr25                  |   Cr26                |   -
1446:         movei       #$FFFFFFFC,R22                                                                                                                                  | Rword1                |   Mr25                |   Wr26
1447:                                                                                                                                                                     | Rword2                |   word1               |   Wr23
1448:                                                                                                                                                                     | -                     |   -                   |   word2word1 > Wr22
1449:         cmp         R23,R26                                                                                                                                         | Rr23  & Rr26          |   -                   |   -
1450:                                                                                                                                                                     | -                     |   Cflags              |   -
1451:         jr          mi,DSP_LSP_routine_interruption_I2S_pas_fin_de_sample_channel2                                                                                  | Rflags                |   -                   |   Wflags
1452:         nop                                                                                                                                                         | -                     |   ? > WPC             |   -
1453: ; fin de sample => on recharge les infos des registres externes
1454:         shlq        #32-nb_bits_virgule_offset,R26                                                                                                                  | Rr26                  |   -                   |   -
1455:         movei       #LSP_DSP_PAULA_AUD2LEN,R27          ; fin, a virgule                                                                                            | Rword1                |   Cr26                |   -
1456:                                                                                                                                                                     | Rword2                |   word1               |   Wr26
1457:         shrq        #32-nb_bits_virgule_offset,R26      ; on ne garde que la virgule                                                                                | Rr26                  |   -                   |   word2word1 > Wr27
1458:         movei       #LSP_DSP_PAULA_AUD2L,R24            ; sample location a virgule                                                                                 | Rword1                |   Cr26                |   -
1459:                                                                                                                                                                     | Rword2                |   word1               |   Wr26
1460:         load        (R27),R27                                                                                                                                       | Rr27                  |   -                   |   word2word1 > Wr24
1461:         load        (R24),R23                                                                                                                                       | Rr24                  |   Mr27                |   -
1462:         store       R27,(R25)                           ; update internal sample end, a virgule                                                                     | Rr27                  |   Mr24                |   Wr27
1463:         or          R23,R26                             ; on garde la virgule en cours                                                                              | Rr23  & Rr26          |   Mr25                |   Wr23
1464:                                                                                                                                                                     | -                     |   Cr26                |   MWrite
1465: DSP_LSP_routine_interruption_I2S_pas_fin_de_sample_channel2:
1466:         store       R26,(R28)                           ; stocke internal sample pointeur, a virgule                                                                | Rr26  & Rr28          |   -                   |   Wr26
1467:         shrq        #nb_bits_virgule_offset,R26                             ; nouveau pointeur adresse sample partie entiere                                        | Rr26                  |   Mr28                |   -
1468:         shrq        #nb_bits_virgule_offset,R17                             ; ancien pointeur adresse sample partie entiere                                         | Rr17                  |   Cr26                |   MWrite
1469:                                                                                                                                                                     | -                     |   Cr17                |   Wr26
1470:         move        R26,R25                             ; R25 = nouveau pointeur sample                                                                             | Rr26                  |   -                   |   Wr17
1471:                                                                                                                                                                     | -                     |   -                   |   Wr25
1472:         and         R22,R17                             ; ancien pointeur sample modulo 4                                                                           | Rr22  & Rr17          |   -                   |   -
1473:         and         R22,R26                             ; nouveau pointeur sample modulo 4                                                                          | Rr22  & Rr26          |   Cr17                |   -
1474:         movei       #LSP_DSP_PAULA_AUD2DAT,R28          ; 4 octets actuels                                                                                          | Rword1                |   Cr26                |   Wr17
1475:                                                                                                                                                                     | Rword2                |   word1               |   Wr26
1476:         not         R22                                 ; => %11                                                                                                    | Rr22                  |   -                   |   word2word1 > Wr28
1477:         load        (R28),R20                           ; R20 = octets actuels en stock                                                                             | Rr28                  |   Cr22                |   -
1478:         and         R22,R25                             ; R25 = position octet � lire                                                                               | Rr22  & Rr25          |   Mr28                |   Wr22
1479:                                                                                                                                                                     | -                     |   Cr25                |   Wr20
1480:                                                                                                                                                                     | -                     |   -                   |   Wr25
1481:         cmp         R17,R26                                                                                                                                         | Rr17  & Rr26          |   -                   |   -
1482:                                                                                                                                                                     | -                     |   Cflags              |   -
1483:         jr          eq,DSP_LSP_routine_interruption_I2S_pas_nouveau_long_word2                                                                                      | Rflags                |   -                   |   Wflags
1484:         nop                                                                                                                                                         | -                     |   ? > WPC             |   -
1485: ; il faut rafraichir R20
1486:         load        (R26),R20                           ; lit 4 nouveaux octets de sample                                                                           | Rr26                  |   -                   |   -
1487:                                                                                                                                                                     | -                     |   Mr26                |   -
1488:         store       R20,(R28)                           ; rafraichit le stockage des 4 octets                                                                       | Rr20  & Rr28          |   -                   |   Wr20
1489: 
1490: DSP_LSP_routine_interruption_I2S_pas_nouveau_long_word2:
1491:         shlq        #3,R25                  ; numero d'octet � lire * 8                                                                                             | Rr25                  |   Mr28                |   -
1492:         movei       #LSP_DSP_PAULA_AUD2VOL,R23                                                                                                                      | Rword1                |   Cr25                |   MWrite
1493:                                                                                                                                                                     | Rword2                |   word1               |   Wr25
1494:         neg         R25                                 ; -0 -8 -16 -24                                                                                             | Rr25                  |   -                   |   word2word1 > Wr23
1495:                                                                                                                                                                     | -                     |   Cr25                |   -
1496: ; R25=numero d'octet � lire
1497:         sh          R25,R20                             ; shift les 4 octets en stock vers la gauche, pour positionner l'octet � lire en haut                       | Rr25  & Rr20          |   -                   |   Wr25
1498:         load        (R23),R23                           ; R23 = volume : 6 bits                                                                                     | Rr23                  |   Cr20                |   -
1499:         shrq        #24,R20                             ; descends l'octet � lire                                                                                   | Rr20                  |   Mr23                |   Wr20
1500:                                                                                                                                                                     | -                     |   Cr20                |   Wr23
1501:         mult        R23,R20                             ; unsigned multiplication : unsigned sample * volume => 8bits + 6 bits = 14 bits                            | Rr23  & Rr20          |   -                   |   Wr20
1502: 
1503: ; R20=sample channel 2 on 14 bits
1504: 
1505: ; channel 1
1506:         movei       #LSP_DSP_PAULA_internal_location1,R28                       ; adresse sample actuelle, a virgule                                                | Rword1                |   Cr20                |   -
1507:                                                                                                                                                                     | Rword2                |   word1               |   Wr20
1508:         movei       #LSP_DSP_PAULA_internal_increment1,R27                                                                                                          | Rword1                |   -                   |   word2word1 > Wr28
1509:                                                                                                                                                                     | Rword2                |   word1               |   -
1510:         load        (R28),R26                                       ; R26=current pointeur sample 16:16                                                             | Rr28                  |   -                   |   word2word1 > Wr27
1511:         load        (R27),R27                                       ; R27=increment 16:16                                                                           | Rr27                  |   Mr28                |   -
1512:                                                                                                                                                                     | -                     |   Mr27                |   Wr26
1513:         move        R26,R17                                         ; R17 = pointeur sample a virgule avant increment                                               | Rr26                  |   -                   |   Wr27
1514:         movei       #LSP_DSP_PAULA_internal_length1,R25             ; =FIN                                                                                          | Rword1                |   -                   |   Wr17
1515:                                                                                                                                                                     | Rword2                |   word1               |   -
1516:                                                                                                                                                                     | -                     |   -                   |   word2word1 > Wr25
1517:         add         R27,R26                                         ; R26=adresse+increment , a virgule                                                             | Rr27  & Rr26          |   -                   |   -
1518:         load        (R25),R23                                                                                                                                       | Rr25                  |   Cr26                |   -
1519:         movei       #$FFFFFFFC,R22                                                                                                                                  | Rword1                |   Mr25                |   Wr26
1520:                                                                                                                                                                     | Rword2                |   word1               |   Wr23
1521:                                                                                                                                                                     | -                     |   -                   |   word2word1 > Wr22
1522:         cmp         R23,R26                                                                                                                                         | Rr23  & Rr26          |   -                   |   -
1523:                                                                                                                                                                     | -                     |   Cflags              |   -
1524:         jr          mi,DSP_LSP_routine_interruption_I2S_pas_fin_de_sample_channel1                                                                                  | Rflags                |   -                   |   Wflags
1525:         nop                                                                                                                                                         | -                     |   ? > WPC             |   -
1526: ; fin de sample => on recharge les infos des registres externes
1527:         shlq        #32-nb_bits_virgule_offset,R26                                                                                                                  | Rr26                  |   -                   |   -
1528:         movei       #LSP_DSP_PAULA_AUD1LEN,R27          ; fin, a virgule                                                                                            | Rword1                |   Cr26                |   -
1529:                                                                                                                                                                     | Rword2                |   word1               |   Wr26
1530:         shrq        #32-nb_bits_virgule_offset,R26      ; on ne garde que la virgule                                                                                | Rr26                  |   -                   |   word2word1 > Wr27
1531:         movei       #LSP_DSP_PAULA_AUD1L,R24            ; sample location a virgule                                                                                 | Rword1                |   Cr26                |   -
1532:                                                                                                                                                                     | Rword2                |   word1               |   Wr26
1533:         load        (R27),R27                                                                                                                                       | Rr27                  |   -                   |   word2word1 > Wr24
1534:         load        (R24),R23                                                                                                                                       | Rr24                  |   Mr27                |   -
1535:         store       R27,(R25)                           ; update internal sample end, a virgule                                                                     | Rr27  & Rr25          |   Mr23                |   Wr27
1536:         or          R23,R26                             ; on garde la virgule en cours                                                                              | Rr22  & Rr26          |   Mr25                |   Wr23
1537:                                                                                                                                                                     | -                     |   Cr26                |   MWrite
1538:        
1539: DSP_LSP_routine_interruption_I2S_pas_fin_de_sample_channel1:
1540:         store       R26,(R28)                           ; stocke internal sample pointeur, a virgule                                                                | Rr26  & Rr28          |   -                   |   Wr26
1541:         shrq        #nb_bits_virgule_offset,R26                             ; nouveau pointeur adresse sample partie entiere                                        | Rr26                  |   Mr28                |   -
1542:         shrq        #nb_bits_virgule_offset,R17                             ; ancien pointeur adresse sample partie entiere                                         | Rr17                  |   Cr26                |   MWrite
1543:                                                                                                                                                                     | -                     |   Cr17                |   Wr26
1544:         move        R26,R25                             ; R25 = nouveau pointeur sample                                                                             | Rr26                  |   -                   |   Wr17
1545:                                                                                                                                                                     | -                     |   -                   |   Wr25
1546:         and         R22,R17                             ; ancien pointeur sample modulo 4                                                                           | Rr22  & Rr17          |   -                   |   -
1547:         and         R22,R26                             ; nouveau pointeur sample modulo 4                                                                          | Rr22  & Rr26          |   Cr17                |   -
1548:         movei       #LSP_DSP_PAULA_AUD1DAT,R28          ; 4 octets actuels                                                                                          | Rword1                |   Cr26                |   Wr17
1549:                                                                                                                                                                     | Rword2                |   word1               |   Wr26
1550:         not         R22                                 ; => %11                                                                                                    | Rr22                  |   -                   |   word2word1 > Wr28
1551:         load        (R28),R19                           ; R19 = octets actuels en stock                                                                             | Rr28                  |   Cr22                |   -
1552:         and         R22,R25                             ; R25 = position octet � lire                                                                               | Rr22  & Rr25          |   Mr28                |   Wr22
1553:                                                                                                                                                                     | -                     |   Cr25                |   Wr19
1554:                                                                                                                                                                     | -                     |   -                   |   Wr25
1555:         cmp         R17,R26                                                                                                                                         | Rr17  & Rr26          |   -                   |   -
1556:                                                                                                                                                                     | -                     |   Cflags              |   -
1557:         jr          eq,DSP_LSP_routine_interruption_I2S_pas_nouveau_long_word1                                                                                      | Rflags                |   -                   |   Wflags
1558:         nop                                                                                                                                                         | -                     |   ? > WPC             |   -
1559: ; il faut rafraichir R19
1560:         load        (R26),R19                           ; lit 4 nouveaux octets de sample                                                                           | Rr26                  |   -                   |   -
1561:                                                                                                                                                                     | -                     |   Mr26                |   -
1562:         store       R19,(R28)                           ; rafraichit le stockage des 4 octets                                                                       | Rr19  & Rr28          |   -                   |   Wr19
1563: 
1564: DSP_LSP_routine_interruption_I2S_pas_nouveau_long_word1:
1565:         shlq        #3,R25                  ; numero d'octet � lire * 8                                                                                             | Rr25                  |   Mr28                |   -
1566:         movei       #LSP_DSP_PAULA_AUD1VOL,R23                                                                                                                      | Rword1                |   Cr25                |   Mwrite
1567:                                                                                                                                                                     | Rword2                |   word1               |   Wr25
1568:         neg         R25                                 ; -0 -8 -16 -24                                                                                             | Rr25                  |   -                   |   word2word1 > Wr23
1569:                                                                                                                                                                     | -                     |   Cr25                |   -
1570: ; R25=numero d'octet � lire
1571:         sh          R25,R19                             ; shift les 4 octets en stock vers la gauche, pour positionner l'octet � lire en haut                       | Rr25  & Rr19          |   -                   |   Wr25
1572:         load        (R23),R23                           ; R23 = volume : 6 bits                                                                                     | Rr23                  |   Cr19                |   -
1573:         shrq        #24,R19                             ; descends l'octet � lire                                                                                   | Rr19                  |   Mr23                |   Wr19
1574:                                                                                                                                                                     | -                     |   Cr19                |   Wr23
1575:         mult        R23,R19                             ; unsigned multiplication : unsigned sample * volume => 8bits + 6 bits = 14 bits                            | Rr23  & Rr19          |   -                   |   Wr19
1576:        
1577: ; R19=sample channel 1 on 14 bits
1578: 
1579: ; channel 0
1580:         movei       #LSP_DSP_PAULA_internal_location0,R28                       ; adresse sample actuelle, a virgule                                                | Rword1                |   Cr19                |   -
1581:                                                                                                                                                                     | Rword2                |   word1               |   Wr19
1582:         movei       #LSP_DSP_PAULA_internal_increment0,R27                                                                                                          | Rword1                |   -                   |   word2word1 > Wr28
1583:                                                                                                                                                                     | Rword2                |   word1               |   -
1584:         load        (R28),R26                                       ; R26=current pointeur sample 16:16                                                             | Rr28                  |   -                   |   word2word1 > Wr27
1585:         load        (R27),R27                                       ; R27=increment 16:16                                                                           | Rr27                  |   Mr28                |   -
1586:                                                                                                                                                                     | -                     |   Mr27                |   Wr26
1587:         move        R26,R17                                         ; R17 = pointeur sample a virgule avant increment                                               | Rr26                  |   -                   |   Wr27
1588:         movei       #LSP_DSP_PAULA_internal_length0,R25             ; =FIN                                                                                          | Rword1                |   -                   |   Wr17
1589:                                                                                                                                                                     | Rword2                |   word1               |   -
1590:                                                                                                                                                                     | -                     |   -                   |   word2word1 > Wr25
1591:         add         R27,R26                                         ; R26=adresse+increment , a virgule                                                             | Rr27  & Rr26          |   -                   |   -
1592:         load        (R25),R23                                                                                                                                       | Rr25                  |   Cr26                |   -
1593:         movei       #$FFFFFFFC,R22                                                                                                                                  | Rword1                |   Mr25                |   Wr26
1594:                                                                                                                                                                     | Rword2                |   word1               |   Wr23
1595:                                                                                                                                                                     | -                     |   -                   |   word2word1 > Wr22
1596:         cmp         R23,R26                                                                                                                                         | Rr23  & Rr26          |   -                   |   -
1597:                                                                                                                                                                     | -                     |   Cflags              |   -
1598:         jr          mi,DSP_LSP_routine_interruption_I2S_pas_fin_de_sample_channel0                                                                                  | Rflags                |   -                   |   Wflags
1599:         nop                                                                                                                                                         | -                     |   ? > WPC             |   -
1600: ; fin de sample => on recharge les infos des registres externes
1601:         shlq        #32-nb_bits_virgule_offset,R26                                                                                                                  | Rr26                  |   -                   |   -
1602:         movei       #LSP_DSP_PAULA_AUD0LEN,R27          ; fin, a virgule                                                                                            | Rword1                |   Cr26                |   -
1603:                                                                                                                                                                     | Rword2                |   word1               |   Wr26
1604:         shrq        #32-nb_bits_virgule_offset,R26      ; on ne garde que la virgule                                                                                | Rr26                  |   -                   |   word2word1 > Wr27
1605:         movei       #LSP_DSP_PAULA_AUD0L,R24            ; sample location a virgule                                                                                 | Rword1                |   Cr26                |   -
1606:                                                                                                                                                                     | Rword2                |   word1               |   Wr26
1607:         load        (R27),R27                                                                                                                                       | Rr27                  |   -                   |   word2word1 > Wr24
1608:         load        (R24),R23                                                                                                                                       | Rr24                  |   Mr27                |   -
1609:         store       R27,(R25)                           ; update internal sample end, a virgule                                                                     | Rr27  & Rr25          |   Mr24                |   Wr27
1610:         or          R23,R26                             ; on garde la virgule en cours                                                                              | Rr23  & Rr26          |   Mr25                |   Wr23
1611:                                                                                                                                                                     | -                     |   Cr26                |   Mwrite
1612: DSP_LSP_routine_interruption_I2S_pas_fin_de_sample_channel0:
1613:         store       R26,(R28)                           ; stocke internal sample pointeur, a virgule                                                                | Rr26  & Rr28          |   -                   |   Wr26
1614:         shrq        #nb_bits_virgule_offset,R26                             ; nouveau pointeur adresse sample partie entiere                                        | Rr26                  |   Mr28                |   -
1615:         shrq        #nb_bits_virgule_offset,R17                             ; ancien pointeur adresse sample partie entiere                                         | Rr17                  |   Cr26                |   -
1616:                                                                                                                                                                     | -                     |   Cr17                |   Wr26
1617:         move        R26,R25                             ; R25 = nouveau pointeur sample                                                                             | Rr26                  |   -                   |   Wr17
1618:                                                                                                                                                                     | -                     |   -                   |   Wr25
1619:         and         R22,R17                             ; ancien pointeur sample modulo 4                                                                           | Rr22  & Rr17          |   -                   |   -
1620:         and         R22,R26                             ; nouveau pointeur sample modulo 4                                                                          | Rr22  & Rr26          |   Cr17                |   -
1621:         movei       #LSP_DSP_PAULA_AUD0DAT,R28          ; 4 octets actuels                                                                                          | Rword1                |   Cr26                |   Wr17
1622:                                                                                                                                                                     | Rword2                |   word1               |   Wr26
1623:         not         R22                                 ; => %11                                                                                                    | Rr22                  |   -                   |   word2word1 > Wr28
1624:         load        (R28),R18                           ; R18 = octets actuels en stock channel 0                                                                   | Rr28                  |   Cr22                |   -
1625:         and         R22,R25                             ; R25 = position octet � lire                                                                               | Rr22  & Rr25          |   Mr28                |   Wr22
1626:                                                                                                                                                                     | -                     |   Cr25                |   Wr18
1627:                                                                                                                                                                     | -                     |   -                   |   Wr25
1628:         cmp         R17,R26                                                                                                                                         | Rr17  & Rr26          |   -                   |   -
1629:                                                                                                                                                                     | -                     |   Cflags              |   -
1630:         jr          eq,DSP_LSP_routine_interruption_I2S_pas_nouveau_long_word0                                                                                      | Rflags                |   -                   |   Wflags
1631:         nop                                                                                                                                                         | -                     |   ? > WPC             |   -
1632: ; il faut rafraichir R18
1633:         load        (R26),R18                           ; lit 4 nouveaux octets de sample                                                                           | Rr26                  |   -                   |   -
1634:                                                                                                                                                                     | -                     |   Mr26                |   -
1635:         store       R18,(R28)                           ; rafraichit le stockage des 4 octets                                                                       | Rr18  & Rr28          |   -                   |   Wr18
1636: 
1637: DSP_LSP_routine_interruption_I2S_pas_nouveau_long_word0:
1638:         shlq        #3,R25                  ; numero d'octet � lire * 8                                                                                             | Rr25                  |   Mr28                |   -
1639:         movei       #LSP_DSP_PAULA_AUD0VOL,R23                                                                                                                      | Rword1                |   Cr25                |   MWrite
1640:                                                                                                                                                                     | Rword2                |   word1               |   Wr25
1641:         neg         R25                                 ; -0 -8 -16 -24                                                                                             | Rr25                  |   -                   |   word2word1 > Wr23
1642:                                                                                                                                                                     | -                     |   Cr25                |   -
1643: ; R25=numero d'octet � lire
1644:         sh          R25,R18                             ; shift les 4 octets en stock vers la gauche, pour positionner l'octet � lire en haut                       | Rr25  & Rr18          |   -                   |   Wr25
1645:         load        (R23),R23                           ; R23 = volume : 6 bits                                                                                     | Rr23                  |   Cr18                |   -
1646:         shrq        #24,R18                             ; descends l'octet � lire                                                                                   | Rr18                  |   Mr23                |   Wr18
1647:                                                                                                                                                                     | -                     |   Cr18                |   Wr23
1648:         mult        R23,R18                             ; unsigned multiplication : unsigned sample * volume => 8bits + 6 bits = 14 bits                            | Rr23  & Rr18          |   -                   |   Wr18
1649:        
1650: ; R18=sample channel 0 on 14 bits
1651: 
1652: 
1653: 
1654: ; St�reo Amiga:
1655: ; les canaux 0 et 3 formant la voie st�r�o gauche et 1 et 2 la voie st�r�o droite
1656: ; R18=channel 0
1657: ; R19=channel 1
1658: ; R20=channel 2
1659: ; R21=channel 3
1660:         .if         channel_1=0
1661:             moveq   #0,R18
1662:         .endif
1663:         .if         channel_2=0
1664:             moveq   #0,R19
1665:         .endif
1666:         .if         channel_3=0
1667:             moveq   #0,R20
1668:         .endif
1669:         .if         channel_4=0
1670:             moveq   #0,R21
1671:         .endif
1672: 
1673:         movei       #$8000,R26                                                                                                                                      | Rword1                |   Cr18                |   -
1674:                                                                                                                                                                     | Rword2                |   word1               |   Wr18
1675:                                                                                                                                                                     | -                     |   -                   |   word2word1 > Wr26
1676:         add         R21,R18             ; R18 = left 15 bits unsigned                                                                                               | Rr21  & Rr18          |   -                   |   -
1677:         movei       #L_I2S,R27                                                                                                                                      | Rword1                |   Cr18                |   -
1678:                                                                                                                                                                     | Rword2                |   word1               |   Wr18
1679:                                                                                                                                                                     | -                     |   -                   |   word2word1 > Wr27
1680:         add         R20,R19             ; R19 = right 15 bits unsigned                                                                                              | Rr20  & Rr19          |   -                   |   -
1681:         shlq        #1,R18              ; 16 bits unsigned                                                                                                          | Rr18                  |   Cr19                |   -
1682:         shlq        #1,R19                                                                                                                                          | Rr19                  |   Cr18                |   Wr19
1683:         sub         R26,R18             ; 16 bits signed                                                                                                            | Rr26  & Rr18          |   Cr19                |   Wr18
1684:         movei       #L_I2S+4,R25                                                                                                                                    | Rword1                |   Cr18                |   Wr19
1685:                                                                                                                                                                     | Rword2                |   word1               |   Wr18
1686:                                                                                                                                                                     | -                     |   -                   |   word2word1 > Wr25
1687:         sub         R26,R19                                                                                                                                         | Rr26  & Rr19          |   -                   |   -
1688:                                                                                                                                                                     | -                     |   Cr19                |   -
1689:         store       R19,(R27)           ; write right channel                                                                                                       | Rr19  & Rr27          |   -                   |   Wr19
1690:         store       R18,(R25)           ; write left channel                                                                                                        | Rr18  & Rr25          |   Mr27                |   -
1691: 
1692:        
1693: 
1694:     .if     DSP_DEBUG
1695: ; change la couleur du fond
1696:     movei   #$000,R26
1697:     movei   #BG,r27
1698:     storew  r26,(r27)
1699:     .endif
1700: 
1701: 
1702: ;------------------------------------  
1703: ; return from interrupt I2S
1704:     load    (r31),r28   ; return address                                                                                                                            | Rr31                  |   Mr25                |   MWrite
1705:     bset    #10,r29     ; clear latch 1 = I2S                                                                                                                       | Rr29                  |   Mr31                |   MWrite
1706:                                                                                                                                                                     | -                     |   Cr29                |   Wr28
1707:     ;bset   #11,r29     ; clear latch 1 = timer 1
1708:     ;bset   #12,r29     ; clear latch 1 = timer 2
1709:     bclr    #3,r29      ; clear IMASK                                                                                                                               | Rr29                  |   -                   |   Wr29
1710:     addq    #4,r31      ; pop from stack                                                                                                                            | Rr31                  |   Cr29                |   -
1711:     addqt   #2,r28      ; next instruction                                                                                                                          | Rr28                  |   Cr31                |   Wr29
1712:                                                                                                                                                                     | -                     |   Cr28                |   Wr31
1713:     jump    t,(r28)     ; return                                                                                                                                    | Rr28                  |   -                   |   Wr28
1714:     store   r29,(r30)   ; restore flags                                                                                                                             | Rr29      & Rr30      |   ? > WPC             |   -
1715: 
1716: 
1717: ;--------------------------------------------
1718: ; ---------------- Timer 1 ------------------
1719: ;--------------------------------------------
1720: ; autorise interruptions, pour timer I2S
1721: ;
1722: ; registres utilis�s :
1723: ;       R13/R16   /R31
1724: ;       R0/R1/R2/R3/R4/R5/R6/R7/R8/R9  R12/R14
1725: 
1726: 
1727: DSP_LSP_routine_interruption_Timer1:
1728:     .if     I2S_during_Timer1=1
1729:     bclr    #3,r13      ; clear IMASK
1730:     store   r13,(r16)   ; restore flags
1731:     .endif
1732: 
1733: ; gestion replay LSP
1734: 
1735:     movei       #LSPVars,R14                                                                                                                                        | Rword1                |   -                   |   -
1736:                                                                                                                                                                     | Rword2                |   word1               |   -
1737:     load        (R14),R0                    ; R0 = byte stream                                                                                                      | Rr14                  |   -                   |   word2word1 > Wr14
1738:                                                                                                                                                                     | -                     |   Mr14                |   -
1739: DSP_LSP_Timer1_process:
1740:     moveq       #0,R2                                                                                                                                               | #0                    |   -                   |   Wr0
1741: DSP_LSP_Timer1_cloop:
1742: 
1743:     loadb       (R0),R6                     ; R6 = byte code                                                                                                        | Rr0                   |   -                   |   Wr2
1744:     addq        #1,R0                                                                                                                                               | Rr0                   |   Mr0                 |   -
1745:    
1746:     cmpq        #0,R6                                                                                                                                               | Rr6                   |   -                   |   Wr6
1747:                                                                                                                                                                     | -                     |   Cflags              |   -
1748:     jr          ne,DSP_LSP_Timer1_swCode                                                                                                                            | Rflags                |   -                   |   Wflags
1749:     nop                                                                                                                                                             | -                     |   ? > WPC             |   -
1750:     movei       #$0100,R3                                                                                                                                           | Rword1                |   -                   |   -
1751:                                                                                                                                                                     | Rword2                |   word1               |   -
1752:     add         R3,R2                                                                                                                                               | Rr3   & Rr2           |   -                   |   word2word1 > Wr3
1753:     jr          DSP_LSP_Timer1_cloop                                                                                                                                | -                     |   Cr2                 |   -
1754:     nop                                                                                                                                                             | -                     |   WPC                 |   -
1755: 
1756: DSP_LSP_Timer1_swCode:
1757:     add         R2,R6                                                                                                                                               | Rr2   & Rr6           |   -                   |   -
1758:                                                                                                                                                                     | -                     |   Cr6                 |   -
1759:     move        R6,R2                                                                                                                                               | Rr6                   |   -                   |   Wr6
1760: 
1761:     add         R2,R2                                                                                                                                               | Rr2                   |   -                   |   Wr2
1762:     load        (R14+2),R3          ; R3=code table / m_codeTableAddr                                                                                               | Rr14                  |   Cr2                 |   -
1763:                                                                                                                                                                     | -                     |   Cr14+2              |   Wr2
1764:                                                                                                                                                                     | -                     |           Mr14+2      |   -
1765:     add         R2,R3                                                                                                                                               | Rr2   & Rr3           |   -                   |   Wr3
1766:     movei       #DSP_LSP_Timer1_noInst,R12                                                                                                                          | Rword1                |   Cr3                 |   -
1767:                                                                                                                                                                     | Rword2                |   word1               |   -
1768:     loadw       (R3),R2                                 ; R2 = code                                                                                                 | Rr3                   |   -                   |   word2word1 > Wr12
1769:                                                                                                                                                                     | -                     |   Mr3                 |   -
1770:     cmpq        #0,R2                                                                                                                                               | Rr2                   |   -                   |   Wr2
1771:                                                                                                                                                                     | -                     |   Cflags              |   -
1772:     jump        eq,(R12)                                                                                                                                            | Rflags    & Rr12      |   -                   |   Wflags
1773:     nop                                                                                                                                                             | -                     |   ? > WPC             |   -
1774:     load        (R14+3),R4          ; R4=escape code rewind / m_escCodeRewind                                                                                       | Rr14                  |   -                   |   -
1775:                                                                                                                                                                     | -                     |   Cr14+3              |   -
1776:     movei       #DSP_LSP_Timer1_r_rewind,R12                                                                                                                        | Rword1                |   -       Mr14+3      |   -
1777:                                                                                                                                                                     | Rword2                |   word1               |   Wr4
1778:                                                                                                                                                                     | -                     |   -                   |   word2word1 > Wr12
1779:     cmp         R4,R2                                                                                                                                               | Rr4   & Rr2           |   -                   |   -
1780:                                                                                                                                                                     | -                     |   Cflags              |   -
1781:     jump        eq,(R12)                                                                                                                                            | Rflags    & Rr12      |   -                   |   Wflags
1782:     nop                                                                                                                                                             | -                     |   ? > WPC             |   -
1783:     load        (R14+4),R4          ; R4=escape code set bpm / m_escCodeSetBpm                                                                                      | Rr14                  |   -                   |   -
1784:                                                                                                                                                                     | -                     |   Cr14+4              |   -
1785:     movei       #DSP_LSP_Timer1_r_chgbpm,R12                                                                                                                        | Rword1                |   -       Mr14+4      |   -
1786:                                                                                                                                                                     | Rword2                |   word1               |   Wr4
1787:                                                                                                                                                                     | -                     |   -                   |   word2word1 > Wr12
1788:     cmp         R4,R2                                                                                                                                               | Rr4   & Rr2           |   -                   |   -
1789:                                                                                                                                                                     | -                     |   Cflags              |   -
1790:     jump        eq,(R12)                                                                                                                                            | Rflags    & Rr12      |   -                   |   Wflags
1791:     nop                                                                                                                                                             | -                     |   ? > WPC             |   -
1792: 
1793: ;--------------------------
1794: ; gestion des volumes
1795: ;--------------------------
1796: ; test volume canal 3
1797:     btst        #7,R2                                                                                                                                               | Rr2                   |   -                   |   -
1798:                                                                                                                                                                     | -                     |   Cflags              |   -
1799:     jr          eq,DSP_LSP_Timer1_noVd                                                                                                                              | Rflags                |   -                   |   Wflags
1800:     nop                                                                                                                                                             | -                     |   ? > WPC             |   -
1801:     loadb       (R0),R4                                                                                                                                             | Rr0                   |   -                   |   -
1802:     movei       #LSP_DSP_PAULA_AUD3VOL,R5                                                                                                                           | Rword1                |   Mr0                 |   -
1803:                                                                                                                                                                     | Rword2                |   word1               |   Wr4
1804:     addq        #1,R0                                                                                                                                               | Rr0                   |   -                   |   word2word1 > Wr5
1805:     store       R4,(R5)                                                                                                                                             | Rr4   & Rr5           |   Cr0                 |   -
1806: DSP_LSP_Timer1_noVd:
1807: ; test volume canal 2
1808:     btst        #6,R2                                                                                                                                               | Rr2                   |   Mr5                 |   Wr0
1809:                                                                                                                                                                     | -                     |   Cflags              |   MWrite
1810:     jr          eq,DSP_LSP_Timer1_noVc                                                                                                                              | Rflags                |   -                   |   Wflags
1811:     nop                                                                                                                                                             | -                     |   ? > WPC             |   -
1812:     loadb       (R0),R4                                                                                                                                             | Rr0                   |   -                   |   -
1813:     movei       #LSP_DSP_PAULA_AUD2VOL,R5                                                                                                                           | Rword1                |   Mr0                 |   -
1814:                                                                                                                                                                     | Rword2                |   word1               |   Wr4
1815:     addq        #1,R0                                                                                                                                               | Rr0                   |   -                   |   word2word1 > Wr5
1816:     store       R4,(R5)                                                                                                                                             | Rr4   & Rr5           |   Cr0                 |   -
1817: DSP_LSP_Timer1_noVc:
1818: ; test volume canal 1
1819:     btst        #5,R2                                                                                                                                               | Rr2                   |   Mr5                 |   Wr0
1820:                                                                                                                                                                     | -                     |   Cflags              |   MWrite
1821:     jr          eq,DSP_LSP_Timer1_noVb                                                                                                                              | Rflags                |   -                   |   Wflags
1822:     nop                                                                                                                                                             | -                     |   ? > WPC             |   -
1823:     loadb       (R0),R4                                                                                                                                             | Rr0                   |   -                   |   -
1824:     movei       #LSP_DSP_PAULA_AUD1VOL,R5                                                                                                                           | Rword1                |   Mr0                 |   -
1825:                                                                                                                                                                     | Rword2                |   word1               |   Wr4
1826:     addq        #1,R0                                                                                                                                               | Rr0                   |   -                   |   word2word1 > Wr5
1827:     store       R4,(R5)                                                                                                                                             | Rr4   & Rr5           |   Cr0                 |   -
1828: DSP_LSP_Timer1_noVb:
1829: ; test volume canal 0
1830:     btst        #4,R2                                                                                                                                               | Rr2                   |   Mr5                 |   Wr0
1831:                                                                                                                                                                     | -                     |   Cflags              |   MWrite
1832:     jr          eq,DSP_LSP_Timer1_noVa                                                                                                                              | Rflags                |   -                   |   Wflags
1833:     nop                                                                                                                                                             | -                     |   ? > WPC             |   -
1834:     loadb       (R0),R4                                                                                                                                             | Rr0                   |   -                   |   -
1835:     movei       #LSP_DSP_PAULA_AUD0VOL,R5                                                                                                                           | Rword1                |   Mr0                 |   -
1836:                                                                                                                                                                     | Rword2                |   word1               |   Wr4
1837:     addq        #1,R0                                                                                                                                               | Rr0                   |   -                   |   word2word1 > Wr5
1838:     store       R4,(R5)                                                                                                                                             | Rr4   & Rr5           |   Cr0                 |   -
1839: DSP_LSP_Timer1_noVa:
1840: 
1841:     .if         LSP_avancer_module=1
1842:     store       R0,(R14)                                    ; store byte stream ptr                                                                                 | Rr0   & Rr14          |   Mr5                 |   Wr0
1843:     .endif
1844:     addq        #4,R14                                  ; avance a word stream ptr                                                                                  | Rr14                  |   Mr14                |   Mwrite
1845:                                                                                                                                                                     | -                     |   Cr14                |   Mwrite
1846:     load        (R14),R0                                    ; R0 = word stream                                                                                      | Rr14                  |   -                   |   Wr14
1847: 
1848: ;--------------------------
1849: ; gestion des notes
1850: ;--------------------------
1851: ; test period canal 3
1852:     btst        #3,R2                                                                                                                                               | Rr2                   |   Mr14                |   -
1853:                                                                                                                                                                     | -                     |   Cflags              |   Wr0
1854:     jr          eq,DSP_LSP_Timer1_noPd                                                                                                                              | Rflags                |   -                   |   Wflags
1855:     nop                                                                                                                                                             | -                     |   ? > WPC             |   -
1856:     loadw       (R0),R4                                                                                                                                             | Rr0                   |   -                   |   -
1857:     movei       #LSP_DSP_PAULA_AUD3PER,R5                                                                                                                           | Rword1                |   Mr0                 |   -
1858:                                                                                                                                                                     | Rword2                |   word1               |   Wr4
1859:     addq        #2,R0                                                                                                                                               | Rr0                   |   -                   |   word2word1 > Wr5
1860:     store       R4,(R5)                                                                                                                                             | Rr4   & Rr5           |   Cr0                 |   -
1861: DSP_LSP_Timer1_noPd:
1862: ; test period canal 2
1863:     btst        #2,R2                                                                                                                                               | Rr2                   |   Mr5                 |   Wr0
1864:                                                                                                                                                                     | -                     |   Cflags              |   MWrite
1865:     jr          eq,DSP_LSP_Timer1_noPc                                                                                                                              | Rflags                |   -                   |   Wflags
1866:     nop                                                                                                                                                             | -                     |   ? > WPC             |   -
1867:     loadw       (R0),R4                                                                                                                                             | Rr0                   |   -                   |   -
1868:     movei       #LSP_DSP_PAULA_AUD2PER,R5                                                                                                                           | Rword1                |   Mr0                 |   -
1869:                                                                                                                                                                     | Rword2                |   word1               |   Wr4
1870:     addq        #2,R0                                                                                                                                               | Rr0                   |   -                   |   word2word1 > Wr5
1871:     store       R4,(R5)                                                                                                                                             | Rr4   & Rr5           |   Cr0                 |   -
1872: DSP_LSP_Timer1_noPc:
1873: ; test period canal 1
1874:     btst        #1,R2                                                                                                                                               | Rr2                   |   Mr5                 |   Wr0
1875:                                                                                                                                                                     | -                     |   Cflags              |   Mwrite
1876:     jr          eq,DSP_LSP_Timer1_noPb                                                                                                                              | Rflags                |   -                   |   Wflags
1877:     nop                                                                                                                                                             | -                     |   ? > WPC             |   -
1878:     loadw       (R0),R4                                                                                                                                             | Rr0                   |   -                   |   -
1879:     movei       #LSP_DSP_PAULA_AUD1PER,R5                                                                                                                           | Rword1                |   Mr0                 |   -
1880:                                                                                                                                                                     | Rword2                |   word1               |   Wr4
1881:     addq        #2,R0                                                                                                                                               | Rr0                   |   -                   |   word2word1 > Wr5
1882:     store       R4,(R5)                                                                                                                                             | Rr4   & Rr5           |   Cr0                 |   -
1883: DSP_LSP_Timer1_noPb:
1884: ; test period canal 0
1885:     btst        #0,R2                                                                                                                                               | Rr2                   |   Mr5                 |   Wr0
1886:                                                                                                                                                                     | -                     |   Cflags              |   MWrite
1887:     jr          eq,DSP_LSP_Timer1_noPa                                                                                                                              | Rflags                |   -                   |   Wflags
1888:     nop                                                                                                                                                             | -                     |   ? > WPC             |   -
1889:     loadw       (R0),R4                                                                                                                                             | Rr0                   |   -                   |   -
1890:     movei       #LSP_DSP_PAULA_AUD0PER,R5                                                                                                                           | Rword1                |   Mr0                 |   -
1891:                                                                                                                                                                     | Rword2                |   word1               |   Wr4
1892:     addq        #2,R0                                                                                                                                               | Rr0                   |   -                   |   word2word1 > Wr5
1893:     store       R4,(R5)                                                                                                                                             | Rr4   & Rr5           |   Cr0                 |   -
1894: DSP_LSP_Timer1_noPa:
1895: 
1896: ; pas de test des 8 bits du haut en entier pour zapper la lecture des instruments
1897: ; tst.w d0                          ; d0.w, avec d0.b qui a avanc� ! / beq.s    .noInst
1898: 
1899:     load        (R14+4),R5      ; R5= instrument table  ( =+$10)  = a2   / m_lspInstruments-1 = 5-1                                                                 | Rr14                  |   Mr5                 |   Wr0
1900:                                                                                                                                                                     | -                     |   Cr14+4              |   Mwrite
1901: 
1902: ;--------------------------
1903: ; gestion des instruments
1904: ;--------------------------
1905: ;--- test instrument voie 3
1906:     movei       #DSP_LSP_Timer1_setIns3,R12                                                                                                                         | Rword1                |   -       Mr14+4      |   -
1907:                                                                                                                                                                     | Rword2                |   word1               |   Wr5
1908:     btst        #15,R2                                                                                                                                              | Rr2                   |   -                   |   word2word1 > Wr12
1909:                                                                                                                                                                     | -                     |   Cflags              |   -
1910:     jump        ne,(R12)                                                                                                                                            | Rflags                |   -                   |   Wflags
1911:     nop                                                                                                                                                             | -                     |   ? > WPC             |   -
1912:    
1913:     movei       #DSP_LSP_Timer1_skip3,R12                                                                                                                           | Rword1                |   -                   |   -
1914:                                                                                                                                                                     | Rword2                |   word1               |   -
1915:     btst        #14,R2                                                                                                                                              | Rr2                   |   -                   |   word2word1 > Wr12
1916:                                                                                                                                                                     | -                     |   Cflags              |   -
1917:     jump        eq,(R12)                                                                                                                                            | Rflags                |   -                   |   Wflags
1918:     nop                                                                                                                                                             | -                     |   ? > WPC             |   -
1919: 
1920: ; repeat voie 3
1921:     movei       #LSP_DSP_repeat_pointeur3,R3                                                                                                                        | Rword1                |   -                   |   -
1922:                                                                                                                                                                     | Rword2                |   word1               |   -
1923:     movei       #LSP_DSP_repeat_length3,R4                                                                                                                          | Rword1                |   -                   |   word2word1 > Wr3
1924:                                                                                                                                                                     | Rword2                |   word1               |   -
1925:     load        (R3),R3                 ; pointeur sauvegard�, sur infos de repeats                                                                                 | Rr3                   |   -                   |   word2word1 > Wr4
1926:     load        (R4),R4                                                                                                                                             | Rr4                   |   Mr3                 |   -
1927:     movei       #LSP_DSP_PAULA_AUD3L,R7                                                                                                                             | Rword1                |   Mr4                 |   Wr3
1928:                                                                                                                                                                     | Rword2                |   word1               |   Wr4
1929:     movei       #LSP_DSP_PAULA_AUD3LEN,R8                                                                                                                           | Rword1                |   -                   |   word2word1 > Wr7
1930:                                                                                                                                                                     | Rword2                |   word1               |   -
1931:                                                                                                                                                                     | -                     |   -                   |   word2word1 > Wr8
1932:     store       R3,(R7)                                                                                                                                             | Rr3   & Rr7           |   -                   |   -
1933:     store       R4,(R8)                 ; stocke le pointeur sample de repeat dans LSP_DSP_PAULA_AUD3L                                                              | Rr4   & Rr8           |   Mr7                 |   -
1934:     jump        (R12)               ; jump en DSP_LSP_Timer1_skip3                                                                                                  | Rr12                  |   Mr8                 |   MWrite
1935:     nop                                                                                                                                                             | -                     |   r12 > WPC           |   MWrite
1936: 
1937: DSP_LSP_Timer1_setIns3:
1938:     loadw       (R0),R3             ; offset de l'instrument par rapport au precedent                                                                               | Rr0                   |   -                   |   -
1939:                                                                                                                                                                     | -                     |   Mr0                 |   -
1940: ; addition en .w
1941:     btst        #15,R3                                                                                                                                              | Rr3                   |   -                   |   Wr3
1942:                                                                                                                                                                     | -                     |   Cflags              |   -
1943:     jr          eq,.positif3                                                                                                                                        | Rflags                |   -                   |   Wflags
1944:     nop                                                                                                                                                             | -                     |   ? > WPC             |   -
1945:     movei       #$FFFF0000,R7                                                                                                                                       | Rword1                |   -                   |   -
1946:                                                                                                                                                                     | Rword2                |   word1               |   -
1947:     or          R7,R3                                                                                                                                               | Rr7   & Rr3           |   -                   |   word2word1 > Wr7
1948:                                                                                                                                                                     | -                     |   Cr3                 |   -
1949: .positif3:
1950:     add         R3,R5               ;R5=pointeur datas instruments                                                                                                  | Rr3   & Rr5           |   -                   |   -
1951:     addq        #2,R0                                                                                                                                               | Rr0                   |   Cr5                 |   -
1952: 
1953: 
1954:     movei       #LSP_DSP_PAULA_AUD3L,R7                                                                                                                             | Rword1                |   Cr0                 |   Wr5
1955:                                                                                                                                                                     | Rword2                |   word1               |   Wr0
1956:     loadw       (R5),R6                                                                                                                                             | Rr5                   |   -                   |   word2word1 > Wr7
1957:     addq        #2,R5                                                                                                                                               | Rr5                   |   Mr5                 |   -
1958:     shlq        #16,R6                                                                                                                                              | Rr6                   |   Cr5                 |   Wr6
1959:     loadw       (R5),R8                                                                                                                                             | Rr5                   |   Cr6                 |   Wr5
1960:                                                                                                                                                                     | -                     |   Mr5                 |   Wr6
1961:     or          R8,R6                                                                                                                                               | Rr8   & Rr6           |   -                   |   Wr8
1962:     movei       #LSP_DSP_PAULA_AUD3LEN,R8                                                                                                                           | Rword1                |   Cr6                 |   -
1963:                                                                                                                                                                     | Rword2                |   word1               |   Wr6
1964:     shlq        #nb_bits_virgule_offset,R6                                                                                                                          | Rr6                   |   -                   |   word2word1 > Wr8
1965:                                                                                                                                                                     | -                     |   Cr6                 |   -
1966:     store       R6,(R7)             ; stocke le pointeur sample a virgule dans LSP_DSP_PAULA_AUD3L                                                                  | Rr6   & Rr7           |   -                   |   Wr6
1967:     addq        #2,R5                                                                                                                                               | Rr5                   |   Mr7                 |   -
1968:                                                                                                                                                                     | -                     |   Cr5                 |   MWrite
1969:     loadw       (R5),R9             ; .w = R9 = taille du sample                                                                                                    | Rr5                   |   -                   |   Wr5
1970:                                                                                                                                                                     | -                     |   Mr5                 |   -
1971:     shlq        #nb_bits_virgule_offset,R9              ; en 16:16                                                                                                  | Rr9                   |   -                   |   Wr9
1972:                                                                                                                                                                     | -                     |   Cr9                 |   -
1973:     add         R6,R9               ; taille devient fin du sample, a virgule                                                                                       | Rr6   & Rr9           |   -                   |   Wr9
1974:                                                                                                                                                                     | -                     |   Cr9                 |   -
1975:     store       R9,(R8)             ; stocke la nouvelle fin a virgule                                                                                              | Rr9   & Rr8           |   -                   |   Wr9
1976:     addq        #2,R5               ; positionne sur pointeur de repeat                                                                                             | Rr5                   |   Mr8                 |   -
1977: ; repeat pointeur
1978:     movei       #LSP_DSP_repeat_pointeur3,R7                                                                                                                        | Rword1                |   Cr5                 |   Mwrite
1979:                                                                                                                                                                     | Rword2                |   word1               |   Wr5
1980:     loadw       (R5),R4                                                                                                                                             | Rr5                   |   -                   |   word2word1 > Wr7
1981:     addq        #2,R5                                                                                                                                               | Rr5                   |   Mr5                 |   -
1982:     shlq        #16,R4                                                                                                                                              | Rr4                   |   Cr5                 |   Wr4
1983:     loadw       (R5),R8                                                                                                                                             | Rr5                   |   Cr4                 |   Wr5
1984:                                                                                                                                                                     | -                     |   Mr5                 |   Wr4
1985:     or          R8,R4                                                                                                                                               | Rr8   & Rr4           |   -                   |   Wr8
1986:     addq        #2,R5                                                                                                                                               | Rr5                   |   Cr4                 |   -
1987:     shlq        #nb_bits_virgule_offset,R4                                                                                                                          | Rr4                   |   Cr5                 |   Wr4
1988:                                                                                                                                                                     | -                     |   Cr4                 |   Wr5
1989:     store       R4,(R7)             ; pointeur sample repeat, a virgule                                                                                             | Rr4   & Rr7           |   -                   |   Wr4
1990: ; repeat length
1991:     movei       #LSP_DSP_repeat_length3,R7                                                                                                                          | Rword1                |   Mr7                 |   -
1992:                                                                                                                                                                     | Rword2                |   word1               |   MWrite
1993:     loadw       (R5),R8             ; .w = R8 = taille du sample                                                                                                    | Rr5                   |   -                   |   word2word1 > Wr7
1994:                                                                                                                                                                     | -                     |   Mr5                 |   -
1995:     shlq        #nb_bits_virgule_offset,R8              ; en 16:16                                                                                                  | Rr8                   |   -                   |   Wr8
1996:                                                                                                                                                                     | -                     |   Cr8                 |   -
1997:     add         R4,R8                                                                                                                                               | Rr4   & Rr8           |   -                   |   Wr8
1998:                                                                                                                                                                     | -                     |   Cr8                 |   -
1999:     store       R8,(R7)             ; stocke la nouvelle taille                                                                                                     | Rr8   & Rr7           |   -                   |   Wr8
2000:     subq        #4,R5                                                                                                                                               | Rr5                   |   Mr7                 |   -
2001:    
2002: ; test le reset pour prise en compte immediate du changement de sample
2003:     movei       #DSP_LSP_Timer1_noreset3,R12                                                                                                                        | Rword1                |   Cr5                 |   MWrite
2004:                                                                                                                                                                     | Rword2                |   word1               |   Wr5
2005:     btst        #14,R2                                                                                                                                              | Rr2                   |   -                   |   word2word1 > Wr12
2006:                                                                                                                                                                     | -                     |   Cflags              |   -
2007:     jump        eq,(R12)                                                                                                                                            | Rflags    & Rr12      |   -                   |   Wflags
2008:     nop                                                                                                                                                             | -                     |   ? > WPC             |   -
2009: ; reset a travers le dmacon, il faut rafraichir : LSP_DSP_PAULA_internal_location3 & LSP_DSP_PAULA_internal_length3 & LSP_DSP_PAULA_internal_offset3=0
2010:     movei       #LSP_DSP_PAULA_internal_location3,R7                                                                                                                | Rword1                |   -                   |   -
2011:                                                                                                                                                                     | Rword2                |   word1               |   -
2012:     movei       #LSP_DSP_PAULA_internal_length3,R8                                                                                                                  | Rword1                |   -                   |   word2word1 > Wr7
2013:                                                                                                                                                                     | Rword2                |   word1               |   -
2014:                                                                                                                                                                     | -                     |   -                   |   word2word1 > Wr8
2015:     store       R6,(R7)             ; stocke le pointeur sample dans LSP_DSP_PAULA_internal_location3                                                               | Rr6   & Rr7           |   -                   |   -
2016:     store       R9,(R8)             ; stocke la nouvelle taille en 16:16: dans LSP_DSP_PAULA_internal_length3                                                       | Rr9   & Rr8           |   Mr7                 |   -
2017: ; remplace les 4 octets en stock
2018:     move        R6,R12                                                                                                                                              | Rr6                   |   Mr8                 |   MWrite
2019:     shrq        #nb_bits_virgule_offset+2,R12   ; enleve la virgule  + 2 bits du bas                                                                                | Rr12                  |   -                   |   Wr12    MWrite
2020:     movei       #LSP_DSP_PAULA_AUD3DAT,R8                                                                                                                           | Rword1                |   Cr12                |   -
2021:                                                                                                                                                                     | Rword2                |   word1               |   Wr12
2022:     shlq        #2,R12                                                                                                                                              | Rr12                  |   -                   |   word2word1 > Wr8
2023:                                                                                                                                                                     | -                     |   Cr12                |   -
2024:     load        (R12),R7                                                                                                                                            | Rr12                  |   -                   |   Wr12
2025:                                                                                                                                                                     | -                     |   Mr12                |   -
2026:     store       R7,(R8)                                                                                                                                             | Rr7   & Rr8           |   -                   |   Wr7
2027:    
2028: 
2029: DSP_LSP_Timer1_noreset3:
2030: DSP_LSP_Timer1_skip3:
2031: 
2032: ;--- test instrument voie 2
2033:     movei       #DSP_LSP_Timer1_setIns2,R12                                                                                                                         | Rword1                |   Mr8                 |   -
2034:                                                                                                                                                                     | Rword2                |   word1               |   Mwrite
2035:     btst        #13,R2                                                                                                                                              | Rr2                   |   -                   |   word2word1 > Wr12
2036:                                                                                                                                                                     | -                     |   Cflags              |   -
2037:     jump        ne,(R12)                                                                                                                                            | Rflags    & Rr12      |   -                   |   Wflags
2038:     nop                                                                                                                                                             | -                     |   ? > WPC             |   -
2039:    
2040:     movei       #DSP_LSP_Timer1_skip2,R12                                                                                                                           | Rword1                |   -                   |   -
2041:                                                                                                                                                                     | Rword2                |   word1               |   -
2042:     btst        #12,R2                                                                                                                                              | Rr2                   |   -                   |   word2word1 > Wr12
2043:                                                                                                                                                                     | -                     |   Cflags              |   -
2044:     jump        eq,(R12)                                                                                                                                            | Rflags                |   -                   |   Wflags
2045:     nop                                                                                                                                                             | -                     |   ? > WPC             |   -
2046: 
2047: ; repeat voie 2
2048:     movei       #LSP_DSP_repeat_pointeur2,R3                                                                                                                        | Rword1                |   -                   |   -
2049:                                                                                                                                                                     | Rword2                |   word1               |   -
2050:     movei       #LSP_DSP_repeat_length2,R4                                                                                                                          | Rword1                |   -                   |   word2word1 > Wr3
2051:                                                                                                                                                                     | Rword2                |   word1               |   -
2052:     load        (R3),R3                 ; pointeur sauvegard�, sur infos de repeats                                                                                 | Rr3                   |   -                   |   word2word1 > Wr4
2053:     load        (R4),R4                                                                                                                                             | Rr4                   |   Mr3                 |   -
2054:     movei       #LSP_DSP_PAULA_AUD2L,R7                                                                                                                             | Rword1                |   Mr4                 |   Wr3
2055:                                                                                                                                                                     | Rword2                |   word1               |   Wr4
2056:     movei       #LSP_DSP_PAULA_AUD2LEN,R8                                                                                                                           | Rword1                |   -                   |   word2word1 > Wr7
2057:                                                                                                                                                                     | Rword2                |   word1               |   -
2058:                                                                                                                                                                     | -                     |   -                   |   word2word1 > Wr8
2059:     store       R3,(R7)                                                                                                                                             | Rr3   & Rr7           |   -                   |   -
2060:     store       R4,(R8)                 ; stocke le pointeur sample de repeat dans LSP_DSP_PAULA_AUD3L                                                              | Rr4   & Rr8           |   Mr7                 |   -
2061:     jump        (R12)               ; jump en DSP_LSP_Timer1_skip3                                                                                                  | Rr12                  |   Mr8                 |   Mwrite
2062:     nop                                                                                                                                                             | -                     |   WPC                 |   Mwrite
2063: 
2064: DSP_LSP_Timer1_setIns2:
2065:     loadw       (R0),R3             ; offset de l'instrument par rapport au precedent                                                                               | Rr0                   |   -                   |   -
2066:                                                                                                                                                                     | -                     |   Mr0                 |   -
2067: ; addition en .w
2068:     btst        #15,R3                                                                                                                                              | Rr3                   |   -                   |   Wr3
2069:                                                                                                                                                                     | -                     |   Cflags              |   -
2070:     jr          eq,.positif2                                                                                                                                        | Rflags                |   -                   |   Wflags
2071:     nop                                                                                                                                                             | -                     |   ? > WPC             |   -
2072:     movei       #$FFFF0000,R7                                                                                                                                       | Rword1                |   -                   |   -
2073:                                                                                                                                                                     | Rword2                |   word1               |   -
2074:     or          R7,R3                                                                                                                                               | Rr7   & Rr3           |   -                   |   word2word1 > Wr7
2075:                                                                                                                                                                     | -                     |   Cr3                 |   -
2076: .positif2:
2077:     add         R3,R5               ;R5=pointeur datas instruments                                                                                                  | Rr3   & Rr5           |   -                   |   Wr3
2078:     addq        #2,R0                                                                                                                                               | Rr0                   |   Cr5                 |   -
2079: 
2080: 
2081:     movei       #LSP_DSP_PAULA_AUD2L,R7                                                                                                                             | Rword1                |   Cr0                 |   Wr5
2082:                                                                                                                                                                     | Rword2                |   word1               |   Wr0
2083:     loadw       (R5),R6                                                                                                                                             | Rr5                   |   -                   |   word2word1 > Wr7
2084:     addq        #2,R5                                                                                                                                               | Rr5                   |   Mr5                 |   -
2085:     shlq        #16,R6                                                                                                                                              | Rr6                   |   Cr5                 |   Wr6
2086:     loadw       (R5),R8                                                                                                                                             | Rr5                   |   Cr6                 |   Wr5
2087:                                                                                                                                                                     | -                     |   Mr5                 |   Wr6
2088:     or          R8,R6                                                                                                                                               | Rr8   & Rr6           |   -                   |   Wr8
2089:     movei       #LSP_DSP_PAULA_AUD2LEN,R8                                                                                                                           | Rword1                |   Cr6                 |   -
2090:                                                                                                                                                                     | Rword2                |   word1               |   Wr6
2091:     shlq        #nb_bits_virgule_offset,R6                                                                                                                          | Rr6                   |   -                   |   word2word1 > Wr8
2092:                                                                                                                                                                     | -                     |   Cr6                 |   -
2093:     store       R6,(R7)             ; stocke le pointeur sample a virgule dans LSP_DSP_PAULA_AUD3L                                                                  | Rr6   & Rr7           |   -                   |   Wr6
2094:     addq        #2,R5                                                                                                                                               | Rr5                   |   Mr7                 |   -
2095:                                                                                                                                                                     | -                     |   Cr5                 |   Mwrite
2096:     loadw       (R5),R9             ; .w = R9 = taille du sample                                                                                                    | Rr5                   |   -                   |   Wr5
2097:                                                                                                                                                                     | -                     |   Mr5                 |   -
2098:     shlq        #nb_bits_virgule_offset,R9              ; en 16:16                                                                                                  | Rr9                   |   -                   |   Wr9
2099:                                                                                                                                                                     | -                     |   Cr9                 |   -
2100:     add         R6,R9               ; taille devient fin du sample, a virgule                                                                                       | Rr6   & Rr9           |   -                   |   Wr9
2101:                                                                                                                                                                     | -                     |   Cr9                 |   -
2102:     store       R9,(R8)             ; stocke la nouvelle fin a virgule                                                                                              | Rr9   & Rr8           |   -                   |   Wr9
2103:     addq        #2,R5               ; positionne sur pointeur de repeat                                                                                             | Rr5                   |   Mr8                 |   -
2104: ; repeat pointeur
2105:     movei       #LSP_DSP_repeat_pointeur2,R7                                                                                                                        | Rword1                |   Cr5                 |   Mwrite
2106:                                                                                                                                                                     | Rword2                |   word1               |   Wr5
2107:     loadw       (R5),R4                                                                                                                                             | Rr5                   |   -                   |   word2word1 > Wr7
2108:     addq        #2,R5                                                                                                                                               | Rr5                   |   Mr5                 |   -
2109:     shlq        #16,R4                                                                                                                                              | Rr4                   |   Cr5                 |   Wr4
2110:     loadw       (R5),R8                                                                                                                                             | Rr5                   |   Cr4                 |   Wr5
2111:                                                                                                                                                                     | -                     |   Mr5                 |   Wr4
2112:     or          R8,R4                                                                                                                                               | Rr8   & Rr4           |   -                   |   Wr8
2113:     addq        #2,R5                                                                                                                                               | Rr5                   |   Cr4                 |   -
2114:     shlq        #nb_bits_virgule_offset,R4                                                                                                                          | Rr4                   |   Cr5                 |   Wr4
2115:                                                                                                                                                                     | -                     |   Cr4                 |   Wr5
2116:     store       R4,(R7)             ; pointeur sample repeat, a virgule                                                                                             | Rr4   & Rr7           |   -                   |   Wr4
2117: ; repeat length
2118:     movei       #LSP_DSP_repeat_length2,R7                                                                                                                          | Rword1                |   Mr7                 |   -
2119:                                                                                                                                                                     | Rword2                |   word1               |   Mwrite
2120:     loadw       (R5),R8             ; .w = R8 = taille du sample                                                                                                    | Rr5                   |   -                   |   word2word1 > Wr7
2121:                                                                                                                                                                     | -                     |   Mr5                 |   -
2122:     shlq        #nb_bits_virgule_offset,R8              ; en 16:16                                                                                                  | Rr8                   |   -                   |   Wr8
2123:                                                                                                                                                                     | -                     |   Cr8                 |   -
2124:     add         R4,R8                                                                                                                                               | Rr4   & Rr8           |   -                   |   Wr8
2125:                                                                                                                                                                     | -                     |   Cr8                 |   -
2126:     store       R8,(R7)             ; stocke la nouvelle taille                                                                                                     | Rr8   & Rr7           |   -                   |   Wr8
2127:     subq        #4,R5                                                                                                                                               | Rr5                   |   Mr7                 |   -
2128:    
2129: ; test le reset pour prise en compte immediate du changement de sample
2130:     movei       #DSP_LSP_Timer1_noreset2,R12                                                                                                                        | Rword1                |   Cr5                 |   Mwrite
2131:                                                                                                                                                                     | Rword2                |   word1               |   Wr5
2132:     btst        #12,R2                                                                                                                                              | Rr2                   |   -                   |   word2word1 > Wr12
2133:                                                                                                                                                                     | -                     |   Cflags              |   -
2134:     jump        eq,(R12)                                                                                                                                            | Rflags                |   -                   |   Wflags
2135:     nop                                                                                                                                                             | -                     |   ? > WPC             |   -
2136: ; reset a travers le dmacon, il faut rafraichir : LSP_DSP_PAULA_internal_location3 & LSP_DSP_PAULA_internal_length3 & LSP_DSP_PAULA_internal_offset3=0
2137:     movei       #LSP_DSP_PAULA_internal_location2,R7                                                                                                                | Rword1                |   -                   |   -
2138:                                                                                                                                                                     | Rword2                |   word1               |   -
2139:     movei       #LSP_DSP_PAULA_internal_length2,R8                                                                                                                  | Rword1                |   -                   |   word2word1 > Wr7
2140:                                                                                                                                                                     | Rword2                |   word1               |   -
2141:                                                                                                                                                                     | -                     |   -                   |   word2word1 > Wr8
2142:     store       R6,(R7)             ; stocke le pointeur sample dans LSP_DSP_PAULA_internal_location3                                                               | Rr6   & Rr7           |   -                   |   -
2143:     store       R9,(R8)             ; stocke la nouvelle taille en 16:16: dans LSP_DSP_PAULA_internal_length3                                                       | Rr9   & Rr8           |   Mr7                 |   -
2144: ; remplace les 4 octets en stock
2145:     move        R6,R12                                                                                                                                              | Rr6                   |   Mr8                 |   Mwrite
2146:     shrq        #nb_bits_virgule_offset+2,R12   ; enleve la virgule  + 2 bits du bas                                                                                | Rr12                  |   -                   |   Wr12    Mwrite
2147:     movei       #LSP_DSP_PAULA_AUD2DAT,R8                                                                                                                           | Rword1                |   Cr12                |   -
2148:                                                                                                                                                                     | Rword2                |   word1               |   Wr12
2149:     shlq        #2,R12                                                                                                                                              | Rr12                  |   -                   |   word2word1 > Wr8
2150:                                                                                                                                                                     | -                     |   Cr12                |   -
2151:     load        (R12),R7                                                                                                                                            | Rr12                  |   -                   |   Wr12
2152:                                                                                                                                                                     | -                     |   Mr12                |   -
2153:     store       R7,(R8)                                                                                                                                             | Rr7   & Rr8           |   -                   |   Wr7
2154:    
2155: 
2156: DSP_LSP_Timer1_noreset2:
2157: DSP_LSP_Timer1_skip2:
2158:    
2159: ;--- test instrument voie 1
2160:     movei       #DSP_LSP_Timer1_setIns1,R12                                                                                                                         | Rword1                |   Mr8                 |   -
2161:                                                                                                                                                                     | Rword2                |   word1               |   Mwrite
2162:     btst        #11,R2                                                                                                                                              | Rr2                   |   -                   |   word2word1 > Wr12
2163:                                                                                                                                                                     | -                     |   Cflags              |   -
2164:     jump        ne,(R12)                                                                                                                                            | Rflags    & Rr12      |   -                   |   Wflags
2165:     nop                                                                                                                                                             | -                     |   ? > WPC             |   -
2166:    
2167:     movei       #DSP_LSP_Timer1_skip1,R12                                                                                                                           | Rword1                |   -                   |   -
2168:                                                                                                                                                                     | Rword2                |   word1               |   -
2169:     btst        #10,R2                                                                                                                                              | Rr2                   |   -                   |   word2word1 > Wr12
2170:                                                                                                                                                                     | -                     |   Cflags              |   -
2171:     jump        eq,(R12)                                                                                                                                            | Rflags    & Rr12      |   -                   |   Wflags
2172:     nop                                                                                                                                                             | -                     |   ? > WPC             |   -
2173: 
2174: ; repeat voie 1
2175:     movei       #LSP_DSP_repeat_pointeur1,R3                                                                                                                        | Rword1                |   -                   |   -
2176:                                                                                                                                                                     | Rword2                |   word1               |   -
2177:     movei       #LSP_DSP_repeat_length1,R4                                                                                                                          | Rword1                |   -                   |   word2word1 > Wr3
2178:                                                                                                                                                                     | Rword2                |   word1               |   -
2179:     load        (R3),R3                 ; pointeur sauvegard�, sur infos de repeats                                                                                 | Rr3                   |   -                   |   word2word1 > Wr4
2180:     load        (R4),R4                                                                                                                                             | Rr4                   |   Mr3                 |   -
2181:     movei       #LSP_DSP_PAULA_AUD1L,R7                                                                                                                             | Rword1                |   Mr4                 |   Wr3
2182:                                                                                                                                                                     | Rword2                |   word1               |   Wr4
2183:     movei       #LSP_DSP_PAULA_AUD1LEN,R8                                                                                                                           | Rword1                |   -                   |   word2word1 > Wr7
2184:                                                                                                                                                                     | Rword2                |   word1               |   -
2185:                                                                                                                                                                     | -                     |   -                   |   word2word1 > Wr8
2186:     store       R3,(R7)                                                                                                                                             | Rr3   & Rr7           |   -                   |   -
2187:     store       R4,(R8)                 ; stocke le pointeur sample de repeat dans LSP_DSP_PAULA_AUD3L                                                              | Rr4   & Rr8           |   Mr7                 |   -
2188:     jump        (R12)               ; jump en DSP_LSP_Timer1_skip3                                                                                                  | Rr12                  |   Mr8                 |   Mwrite
2189:     nop                                                                                                                                                             | -                     |   WPC                 |   Mwrite
2190: 
2191: DSP_LSP_Timer1_setIns1:
2192:     loadw       (R0),R3             ; offset de l'instrument par rapport au precedent                                                                               | Rr0                   |   -                   |   -
2193:                                                                                                                                                                     | -                     |   Mr0                 |   -
2194: ; addition en .w
2195:     btst        #15,R3                                                                                                                                              | Rr3                   |   -                   |   Wr3
2196:                                                                                                                                                                     | -                     |   Cflags              |   -
2197:     jr          eq,.positif1                                                                                                                                        | Rflags                |   -                   |   Wflags
2198:     nop                                                                                                                                                             | -                     |   ? > WPC             |   -
2199:     movei       #$FFFF0000,R7                                                                                                                                       | Rword1                |   -                   |   -
2200:                                                                                                                                                                     | Rword2                |   word1               |   -
2201:     or          R7,R3                                                                                                                                               | Rr7   & Rr3           |   -                   |   word2word1 > Wr7
2202:                                                                                                                                                                     | -                     |   Cr3                 |   -
2203: .positif1:
2204:     add         R3,R5               ;R5=pointeur datas instruments                                                                                                  | Rr3   & Rr5           |   -                   |   Wr3
2205:     addq        #2,R0                                                                                                                                               | Rr0                   |   Cr5                 |   -
2206: 
2207: 
2208:     movei       #LSP_DSP_PAULA_AUD1L,R7                                                                                                                             | Rword1                |   Cr0                 |   Wr5
2209:                                                                                                                                                                     | Rword2                |   word1               |   Wr0
2210:     loadw       (R5),R6                                                                                                                                             | Rr5                   |   -                   |   word2word1 > Wr7
2211:     addq        #2,R5                                                                                                                                               | Rr5                   |   Mr5                 |   -
2212:     shlq        #16,R6                                                                                                                                              | Rr6                   |   Cr5                 |   Wr6
2213:     loadw       (R5),R8                                                                                                                                             | Rr5                   |   Cr6                 |   Wr5
2214:                                                                                                                                                                     | -                     |   Mr5                 |   Wr6
2215:     or          R8,R6                                                                                                                                               | Rr8   & Rr6           |   -                   |   Wr8
2216:     movei       #LSP_DSP_PAULA_AUD1LEN,R8                                                                                                                           | Rword1                |   Cr6                 |   -
2217:                                                                                                                                                                     | Rword2                |   word1               |   Wr6
2218:     shlq        #nb_bits_virgule_offset,R6                                                                                                                          | Rr6                   |   -                   |   word2word1 > Wr8
2219:                                                                                                                                                                     | -                     |   Cr6                 |   -
2220:     store       R6,(R7)             ; stocke le pointeur sample a virgule dans LSP_DSP_PAULA_AUD3L                                                                  | Rr6   & Rr7           |   -                   |   Wr6
2221:     addq        #2,R5                                                                                                                                               | Rr5                   |   Mr7                 |   -
2222:                                                                                                                                                                     | -                     |   Cr5                 |   Mwrite
2223:     loadw       (R5),R9             ; .w = R9 = taille du sample                                                                                                    | Rr5                   |   -                   |   Wr5
2224:                                                                                                                                                                     | -                     |   Mr5                 |   -
2225:     shlq        #nb_bits_virgule_offset,R9              ; en 16:16                                                                                                  | Rr9                   |   -                   |   Wr9
2226:                                                                                                                                                                     | -                     |   Cr9                 |   -
2227:     add         R6,R9               ; taille devient fin du sample, a virgule                                                                                       | Rr6   & Rr9           |   -                   |   Wr9
2228:                                                                                                                                                                     | -                     |   Cr9                 |   -
2229:     store       R9,(R8)             ; stocke la nouvelle fin a virgule                                                                                              | Rr9   & Rr8           |   -                   |   Wr9
2230:     addq        #2,R5               ; positionne sur pointeur de repeat                                                                                             | Rr5                   |   Mr8                 |   -
2231: ; repeat pointeur
2232:     movei       #LSP_DSP_repeat_pointeur1,R7                                                                                                                        | Rword1                |   Cr5                 |   Mwrite
2233:                                                                                                                                                                     | Rword2                |   word1               |   Wr5
2234:     loadw       (R5),R4                                                                                                                                             | Rr5                   |   -                   |   word2word1 > Wr7
2235:     addq        #2,R5                                                                                                                                               | Rr5                   |   Mr5                 |   -
2236:     shlq        #16,R4                                                                                                                                              | Rr4                   |   Cr5                 |   Wr4
2237:     loadw       (R5),R8                                                                                                                                             | Rr5                   |   Cr4                 |   Wr5
2238:                                                                                                                                                                     | -                     |   Mr5                 |   Wr4
2239:     or          R8,R4                                                                                                                                               | Rr8   & Rr4           |   -                   |   Wr8
2240:     addq        #2,R5                                                                                                                                               | Rr5                   |   Cr4                 |   -
2241:     shlq        #nb_bits_virgule_offset,R4                                                                                                                          | Rr4                   |   Cr5                 |   Wr4
2242:                                                                                                                                                                     | -                     |   Cr4                 |   Wr5
2243:     store       R4,(R7)             ; pointeur sample repeat, a virgule                                                                                             | Rr4   & Rr7           |   -                   |   Wr4
2244: ; repeat length
2245:     movei       #LSP_DSP_repeat_length1,R7                                                                                                                          | Rword1                |   Mr7                 |   -
2246:                                                                                                                                                                     | Rword2                |   word1               |   Mwrite
2247:     loadw       (R5),R8             ; .w = R8 = taille du sample                                                                                                    | Rr5                   |   -                   |   word2word1 > Wr7
2248:                                                                                                                                                                     | -                     |   Mr5                 |   -
2249:     shlq        #nb_bits_virgule_offset,R8              ; en 16:16                                                                                                  | Rr8                   |   -                   |   Wr8
2250:                                                                                                                                                                     | -                     |   Cr8                 |   -
2251:     add         R4,R8                                                                                                                                               | Rr4   & Rr8           |   -                   |   Wr8
2252:                                                                                                                                                                     | -                     |   Cr8                 |   -
2253:     store       R8,(R7)             ; stocke la nouvelle taille                                                                                                     | Rr8   & Rr7           |   -                   |   Wr8
2254:     subq        #4,R5                                                                                                                                               | Rr5                   |   Mr7                 |   -
2255:    
2256: ; test le reset pour prise en compte immediate du changement de sample
2257:     movei       #DSP_LSP_Timer1_noreset1,R12                                                                                                                        | Rword1                |   Cr5                 |   Mwrite
2258:                                                                                                                                                                     | Rword2                |   word1               |   Wr5
2259:     btst        #10,R2                                                                                                                                              | Rr2                   |   -                   |   word2word1 > Wr12
2260:                                                                                                                                                                     | -                     |   Cflags              |   -
2261:     jump        eq,(R12)                                                                                                                                            | Rflags                |   -                   |   Wflags
2262:     nop                                                                                                                                                             | -                     |   ? > WPC             |   -
2263: ; reset a travers le dmacon, il faut rafraichir : LSP_DSP_PAULA_internal_location3 & LSP_DSP_PAULA_internal_length3 & LSP_DSP_PAULA_internal_offset3=0
2264:     movei       #LSP_DSP_PAULA_internal_location1,R7                                                                                                                | Rword1                |   -                   |   -
2265:                                                                                                                                                                     | Rword2                |   word1               |   -
2266:     movei       #LSP_DSP_PAULA_internal_length1,R8                                                                                                                  | Rword1                |   -                   |   word2word1 > Wr7
2267:                                                                                                                                                                     | Rword2                |   word1               |   -
2268:                                                                                                                                                                     | -                     |   -                   |   word2word1 > Wr8
2269:     store       R6,(R7)             ; stocke le pointeur sample dans LSP_DSP_PAULA_internal_location3                                                               | Rr6   & Rr7           |   -                   |   -
2270:     store       R9,(R8)             ; stocke la nouvelle taille en 16:16: dans LSP_DSP_PAULA_internal_length3                                                       | Rr9   & Rr8           |   Mr7                 |   -
2271: ; remplace les 4 octets en stock
2272:     move        R6,R12                                                                                                                                              | Rr6                   |   Mr8                 |   Mwrite
2273:     shrq        #nb_bits_virgule_offset+2,R12   ; enleve la virgule  + 2 bits du bas                                                                                | Rr12                  |   -                   |   Wr12    Mwrite
2274:     movei       #LSP_DSP_PAULA_AUD1DAT,R8                                                                                                                           | Rword1                |   Cr12                |   -
2275:                                                                                                                                                                     | Rword2                |   word1               |   Wr12
2276:     shlq        #2,R12                                                                                                                                              | Rr12                  |   -                   |   word2word1 > Wr8
2277:                                                                                                                                                                     | -                     |   Cr12                |   -
2278:     load        (R12),R7                                                                                                                                            | Rr12                  |   -                   |   Wr12
2279:                                                                                                                                                                     | -                     |   Mr12                |   -
2280:     store       R7,(R8)                                                                                                                                             | Rr7   & Rr8           |   -                   |   Wr7
2281:    
2282: 
2283: DSP_LSP_Timer1_noreset1:
2284: DSP_LSP_Timer1_skip1:
2285:    
2286: ;--- test instrument voie 0
2287:     movei       #DSP_LSP_Timer1_setIns0,R12                                                                                                                         | Rword1                |   Mr8                 |   -
2288:                                                                                                                                                                     | Rword2                |   word1               |   Mwrite
2289:     btst        #9,R2                                                                                                                                               | Rr2                   |   -                   |   word2word1 > Wr12
2290:                                                                                                                                                                     | -                     |   Cflags              |   -
2291:     jump        ne,(R12)                                                                                                                                            | Rflags    & Rr12      |   -                   |   Wflags
2292:     nop                                                                                                                                                             | -                     |   ? > WP              |   -
2293:    
2294:     movei       #DSP_LSP_Timer1_skip0,R12                                                                                                                           | Rword1                |   -                   |   -
2295:                                                                                                                                                                     | Rword2                |   word1               |   -
2296:     btst        #8,R2                                                                                                                                               | Rr2                   |   -                   |   word2word1 > Wr12
2297:                                                                                                                                                                     | -                     |   Cflags              |   -
2298:     jump        eq,(R12)                                                                                                                                            | Rflags    & Rr12      |   -                   |   Wflags
2299:     nop                                                                                                                                                             | -                     |   ? > WPC             |   -
2300: 
2301: ; repeat voie 0
2302:     movei       #LSP_DSP_repeat_pointeur0,R3                                                                                                                        | Rword1                |   -                   |   -
2303:                                                                                                                                                                     | Rword2                |   word1               |   -
2304:     movei       #LSP_DSP_repeat_length0,R4                                                                                                                          | Rword1                |   -                   |   word2word1 > Wr3
2305:                                                                                                                                                                     | Rword2                |   word1               |   -
2306:     load        (R3),R3                 ; pointeur sauvegard�, sur infos de repeats                                                                                 | Rr3                   |   -                   |   word2word1 > Wr4
2307:     load        (R4),R4                                                                                                                                             | Rr4                   |   Mr3                 |   -
2308:     movei       #LSP_DSP_PAULA_AUD0L,R7                                                                                                                             | Rword1                |   Mr4                 |   Wr3
2309:                                                                                                                                                                     | Rword2                |   word1               |   Wr4
2310:     movei       #LSP_DSP_PAULA_AUD0LEN,R8                                                                                                                           | Rword1                |   -                   |   word2word1 > Wr7
2311:                                                                                                                                                                     | Rword2                |   word1               |   -
2312:                                                                                                                                                                     | -                     |   -                   |   word2word1 > Wr8
2313:     store       R3,(R7)                                                                                                                                             | Rr3   & Rr7           |   -                   |   -
2314:     store       R4,(R8)                 ; stocke le pointeur sample de repeat dans LSP_DSP_PAULA_AUD3L                                                              | Rr4   & Rr8           |   Mr7                 |   -
2315:     jump        (R12)               ; jump en DSP_LSP_Timer1_skip3                                                                                                  | Rr12                  |   Mr8                 |   Mwrite
2316:     nop                                                                                                                                                             | -                     |   WPC                 |   Mwrite
2317: 
2318: DSP_LSP_Timer1_setIns0:
2319:     loadw       (R0),R3             ; offset de l'instrument par rapport au precedent                                                                               | Rr0                   |   -                   |   -
2320:                                                                                                                                                                     | -                     |   Mr0                 |   -
2321: ; addition en .w
2322:     btst        #15,R3                                                                                                                                              | Rr3                   |   -                   |   Wr3
2323:                                                                                                                                                                     | -                     |   Cflags              |   -
2324:     jr          eq,.positif0                                                                                                                                        | Rflags                |   -                   |   Wflags
2325:     nop                                                                                                                                                             | -                     |   ? > WPC             |   -
2326:     movei       #$FFFF0000,R7                                                                                                                                       | Rword1                |   -                   |   -
2327:                                                                                                                                                                     | Rword2                |   word1               |   -
2328:     or          R7,R3                                                                                                                                               | Rr7   & Rr3           |   -                   |   word2word1 > Wr7
2329:                                                                                                                                                                     | -                     |   Cr3                 |   -
2330: 
2331: .positif0:
2332:     add         R3,R5               ;R5=pointeur datas instruments                                                                                                  | Rr3   & Rr5           |   -                   |   Wr3
2333:     addq        #2,R0                                                                                                                                               | Rr0                   |   Cr5                 |   -
2334: 
2335: 
2336:     movei       #LSP_DSP_PAULA_AUD0L,R7                                                                                                                             | Rword1                |   Cr0                 |   Wr5
2337:                                                                                                                                                                     | Rword2                |   word1               |   Wr0
2338:     loadw       (R5),R6                                                                                                                                             | Rr5                   |   -                   |   word2word1 > Wr7
2339:     addq        #2,R5                                                                                                                                               | Rr5                   |   Mr5                 |   -
2340:     shlq        #16,R6                                                                                                                                              | Rr6                   |   Cr5                 |   Wr6
2341:     loadw       (R5),R8                                                                                                                                             | Rr5                   |   Cr6                 |   Wr5
2342:                                                                                                                                                                     | -                     |   Mr5                 |   Wr6
2343:     or          R8,R6                                                                                                                                               | Rr8   & Rr6           |   -                   |   Wr8
2344:     movei       #LSP_DSP_PAULA_AUD0LEN,R8                                                                                                                           | Rword1                |   Cr6                 |   -
2345:                                                                                                                                                                     | Rword2                |   word1               |   Wr6
2346:     shlq        #nb_bits_virgule_offset,R6                                                                                                                          | Rr6                   |   -                   |   word2word1 > Wr8
2347:                                                                                                                                                                     | -                     |   Cr6                 |   -
2348:     store       R6,(R7)             ; stocke le pointeur sample a virgule dans LSP_DSP_PAULA_AUD3L                                                                  | Rr6   & Rr7           |   -                   |   Wr6
2349:     addq        #2,R5                                                                                                                                               | Rr5                   |   Mr7                 |   -
2350:                                                                                                                                                                     | -                     |   Cr5                 |   Mwrite
2351:     loadw       (R5),R9             ; .w = R9 = taille du sample                                                                                                    | Rr5                   |   -                   |   Wr5
2352:                                                                                                                                                                     | -                     |   Mr5                 |   -
2353:     shlq        #nb_bits_virgule_offset,R9              ; en 16:16                                                                                                  | Rr9                   |   -                   |   Wr9
2354:                                                                                                                                                                     | -                     |   Cr9                 |   -
2355:     add         R6,R9               ; taille devient fin du sample, a virgule                                                                                       | Rr6   & Rr9           |   -                   |   Wr9
2356:                                                                                                                                                                     | -                     |   Cr9                 |   -
2357:     store       R9,(R8)             ; stocke la nouvelle fin a virgule                                                                                              | Rr9   & Rr8           |   -                   |   Wr9
2358:     addq        #2,R5               ; positionne sur pointeur de repeat                                                                                             | Rr5                   |   Mr8                 |   -
2359: ; repeat pointeur
2360:     movei       #LSP_DSP_repeat_pointeur0,R7                                                                                                                        | Rword1                |   Cr5                 |   Mwrite
2361:                                                                                                                                                                     | Rword2                |   word1               |   Wr5
2362:     loadw       (R5),R4                                                                                                                                             | Rr5                   |   -                   |   word2word1 > Wr7
2363:     addq        #2,R5                                                                                                                                               | Rr5                   |   Mr5                 |   -
2364:     shlq        #16,R4                                                                                                                                              | Rr4                   |   Cr5                 |   Wr4
2365:     loadw       (R5),R8                                                                                                                                             | Rr5                   |   Cr4                 |   Wr5
2366:                                                                                                                                                                     | -                     |   Mr5                 |   Wr4
2367:     or          R8,R4                                                                                                                                               | Rr8   & Rr4           |   -                   |   Wr8
2368:     addq        #2,R5                                                                                                                                               | Rr5                   |   Cr4                 |   -
2369:     shlq        #nb_bits_virgule_offset,R4                                                                                                                          | Rr4                   |   Cr5                 |   Wr4
2370:                                                                                                                                                                     | -                     |   Cr4                 |   Wr5
2371:     store       R4,(R7)             ; pointeur sample repeat, a virgule                                                                                             | Rr4   & Rr7           |   -                   |   Wr4
2372: ; repeat length
2373:     movei       #LSP_DSP_repeat_length0,R7                                                                                                                          | Rword1                |   Mr7                 |   -
2374:                                                                                                                                                                     | Rword2                |   word1               |   Mwrite
2375:     loadw       (R5),R8             ; .w = R8 = taille du sample                                                                                                    | Rr5                   |   -                   |   word2word1 > Wr7
2376:                                                                                                                                                                     | -                     |   Mr5                 |   -
2377:     shlq        #nb_bits_virgule_offset,R8              ; en 16:16                                                                                                  | Rr8                   |   -                   |   Wr8
2378:                                                                                                                                                                     | -                     |   Cr8                 |   -
2379:     add         R4,R8                                                                                                                                               | Rr4   & Rr8           |   -                   |   Wr8
2380:                                                                                                                                                                     | -                     |   Cr8                 |   -
2381:     store       R8,(R7)             ; stocke la nouvelle taille                                                                                                     | Rr8   & Rr7           |   -                   |   Wr8
2382:     subq        #4,R5                                                                                                                                               | Rr5                   |   Mr7                 |   -
2383:    
2384: ; test le reset pour prise en compte immediate du changement de sample
2385:     movei       #DSP_LSP_Timer1_noreset0,R12                                                                                                                        | Rword1                |   Cr5                 |   Mwrite
2386:                                                                                                                                                                     | Rword2                |   word1               |   Wr5
2387:     btst        #8,R2                                                                                                                                               | Rr2                   |   -                   |   word2word1 > Wr12
2388:                                                                                                                                                                     | -                     |   Cflags              |   -
2389:     jump        eq,(R12)                                                                                                                                            | Rflags    & Rr12      |   -                   |   Wflags
2390:     nop                                                                                                                                                             | -                     |   ? > WPC             |   -
2391: ; reset a travers le dmacon, il faut rafraichir : LSP_DSP_PAULA_internal_location3 & LSP_DSP_PAULA_internal_length3 & LSP_DSP_PAULA_internal_offset3=0
2392:     movei       #LSP_DSP_PAULA_internal_location0,R7                                                                                                                | Rword1                |   -                   |   -
2393:                                                                                                                                                                     | Rword2                |   word1               |   -
2394:     movei       #LSP_DSP_PAULA_internal_length0,R8                                                                                                                  | Rword1                |   -                   |   word2word1 > Wr7
2395:                                                                                                                                                                     | Rword2                |   word1               |   -
2396:                                                                                                                                                                     | -                     |   -                   |   word2word1 > Wr8
2397:     store       R6,(R7)             ; stocke le pointeur sample dans LSP_DSP_PAULA_internal_location3                                                               | Rr6   & Rr7           |   -                   |   -
2398:     store       R9,(R8)             ; stocke la nouvelle taille en 16:16: dans LSP_DSP_PAULA_internal_length3                                                       | Rr9   & Rr8           |   Mr7                 |   -
2399: ; remplace les 4 octets en stock
2400:     move        R6,R12                                                                                                                                              | Rr6                   |   Mr8                 |   Mwrite
2401:     shrq        #nb_bits_virgule_offset+2,R12   ; enleve la virgule  + 2 bits du bas                                                                                | Rr12                  |   -                   |   Wr12    Mwrite
2402:     movei       #LSP_DSP_PAULA_AUD0DAT,R8                                                                                                                           | Rword1                |   Cr12                |   -
2403:                                                                                                                                                                     | Rword2                |   word1               |   Wr12
2404:     shlq        #2,R12                                                                                                                                              | Rr12                  |   -                   |   word2word1 > Wr8
2405:                                                                                                                                                                     | -                     |   Cr12                |   -
2406:     load        (R12),R7                                                                                                                                            | Rr12                  |   -                   |   Wr12
2407:                                                                                                                                                                     | -                     |   Mr12                |   -
2408:     store       R7,(R8)                                                                                                                                             | Rr7   & Rr8           |   -                   |   Wr7
2409:    
2410: 
2411: DSP_LSP_Timer1_noreset0:
2412: DSP_LSP_Timer1_skip0:
2413:    
2414:    
2415: 
2416: DSP_LSP_Timer1_noInst:
2417:     .if         LSP_avancer_module=1
2418:     store       R0,(R14)            ; store word stream (or byte stream if coming from early out)                                                                   | Rr0   & Rr14          |   Mr8                 |   -
2419:     .endif
2420: 
2421: 
2422: ; - fin de la conversion du player LSP
2423: 
2424: ; elements d'emulation Paula
2425: ; calcul des increments
2426: ; calcul de l'increment a partir de la note Amiga : (3546895 / note) / frequence I2S
2427: 
2428: ; conversion period => increment voie 0
2429:     movei       #DSP_frequence_de_replay_reelle_I2S,R0                                                                                                              | Rword1                |   Mr14                |   Mwrite
2430:                                                                                                                                                                     | Rword2                |   word1               |   Mwrite
2431:     movei       #LSP_DSP_PAULA_internal_increment0,R1                                                                                                               | Rword1                |   -                   |   word2word1 > Wr0
2432:                                                                                                                                                                     | Rword2                |   word1               |   -
2433:     movei       #LSP_DSP_PAULA_AUD0PER,R2                                                                                                                           | Rword1                |   -                   |   word2word1 > Wr1
2434:                                                                                                                                                                     | Rword2                |   word1               |   -
2435:     load        (R0),R0                                                                                                                                             | Rr0                   |   -                   |   word2word1 > Wr2
2436:     movei       #3546895,R3                                                                                                                                         | Rword1                |   Mr0                 |   -
2437:                                                                                                                                                                     | Rword2                |   word1               |   Wr0
2438:     load        (R2),R2                                                                                                                                             | Rr2                   |   -                   |   word2word1 > Wr3
2439:                                                                                                                                                                     | -                     |   Mr2                 |   -
2440:     cmpq        #0,R2                                                                                                                                               | Rr2                   |   -                   |   Wr2
2441:                                                                                                                                                                     | -                     |   Cflags              |   -
2442:     jr          ne,.1                                                                                                                                               | Rflags                |   -                   |   Wflags
2443:     nop                                                                                                                                                             | -                     |   ? > WPC             |   -
2444:     moveq       #0,R4                                                                                                                                               | #0                    |   -                   |   -
2445:     jr          .2                                                                                                                                                  | -                     |   -                   |   Wr4
2446:     nop                                                                                                                                                             | -                     |   WPC                 |   -
2447: .1:
2448:     move        R3,R4                                                                                                                                               | Rr3                   |   -                   |   -
2449:     div         R2,R4           ; (3546895 / note)                                                                                                                  | Rr2   & Rr4           |   -                   |   Wr4
2450:                                                                                                                                                                     | -                     |   Cr4-1               |   -
2451:                                                                                                                                                                     | -                     |   Cr4-2               |   -
2452:                                                                                                                                                                     | -                     |   Cr4-3               |   -
2453:                                                                                                                                                                     | -                     |   Cr4-4               |   -
2454:                                                                                                                                                                     | -                     |   Cr4-5               |   -
2455:                                                                                                                                                                     | -                     |   Cr4-6               |   -
2456:                                                                                                                                                                     | -                     |   Cr4-7               |   -
2457:                                                                                                                                                                     | -                     |   Cr4-8               |   -
2458:                                                                                                                                                                     | -                     |   Cr4-9               |   -
2459:                                                                                                                                                                     | -                     |   Cr4-10              |   -
2460:                                                                                                                                                                     | -                     |   Cr4-11              |   -
2461:                                                                                                                                                                     | -                     |   Cr4-12              |   -
2462:                                                                                                                                                                     | -                     |   Cr4-13              |   -
2463:                                                                                                                                                                     | -                     |   Cr4-14              |   -
2464:                                                                                                                                                                     | -                     |   Cr4-15              |   -
2465:     or          R4,R4                                                                                                                                               | Rr4                   |   -                   |   Wr4
2466:                                                                                                                                                                     | -                     |   Cr4                 |   -
2467:     shlq        #nb_bits_virgule_offset,R4                                                                                                                          | Rr4                   |   -                   |   Wr4
2468:                                                                                                                                                                     | -                     |   Cr4                 |   -
2469:     div         R0,R4           ; (3546895 / note) / frequence I2S en 16:16                                                                                         | Rr0   & Rr4           |   -                   |   -
2470:                                                                                                                                                                     | -                     |   Cr4-1               |   -
2471:                                                                                                                                                                     | -                     |   Cr4-2               |   -
2472:                                                                                                                                                                     | -                     |   Cr4-3               |   -
2473:                                                                                                                                                                     | -                     |   Cr4-4               |   -
2474:                                                                                                                                                                     | -                     |   Cr4-5               |   -
2475:                                                                                                                                                                     | -                     |   Cr4-6               |   -
2476:                                                                                                                                                                     | -                     |   Cr4-7               |   -
2477:                                                                                                                                                                     | -                     |   Cr4-8               |   -
2478:                                                                                                                                                                     | -                     |   Cr4-9               |   -
2479:                                                                                                                                                                     | -                     |   Cr4-10              |   -
2480:                                                                                                                                                                     | -                     |   Cr4-11              |   -
2481:                                                                                                                                                                     | -                     |   Cr4-12              |   -
2482:                                                                                                                                                                     | -                     |   Cr4-13              |   -
2483:                                                                                                                                                                     | -                     |   Cr4-14              |   -
2484:                                                                                                                                                                     | -                     |   Cr4-15              |   -
2485:     or          R4,R4                                                                                                                                               | Rr4                   |   -                   |   Wr4
2486:                                                                                                                                                                     | -                     |   Cr4                 |   -
2487: .2:
2488:     store       R4,(R1)                                                                                                                                             | Rr4   & Rr1           |   -                   |   Wr4
2489: ; conversion period => increment voie 1
2490:     movei       #LSP_DSP_PAULA_AUD1PER,R2                                                                                                                           | Rword1                |   Mr1                 |   -
2491:                                                                                                                                                                     | Rword2                |   word1               |   MWrite
2492:     movei       #LSP_DSP_PAULA_internal_increment1,R1                                                                                                               | Rword1                |   -                   |   word2word1 > Wr2
2493:                                                                                                                                                                     | Rword2                |   word1               |   -
2494:     move        R3,R4                                                                                                                                               | Rr3                   |   -                   |   word2word1 > Wr1
2495:     load        (R2),R2                                                                                                                                             | Rr2                   |   -                   |   Wr4
2496:                                                                                                                                                                     | -                     |   Mr2                 |   -
2497:     cmpq        #0,R2                                                                                                                                               | Rr2                   |   -                   |   Wr2
2498:                                                                                                                                                                     | -                     |   Cflags              |   -
2499:     jr          ne,.12                                                                                                                                              | Rflags                |   -                   |   Wflags
2500:     nop                                                                                                                                                             | -                     |   ? > WPC             |   -
2501:     moveq       #0,R4                                                                                                                                               | #0                    |   -                   |   -
2502:     jr          .22                                                                                                                                                 | -                     |   -                   |   Wr4
2503:     nop                                                                                                                                                             | -                     |   WPC                 |   -
2504: .12:
2505: 
2506:     div         R2,R4           ; (3546895 / note)                                                                                                                  | Rr2   & Rr4           |   -                   |   -
2507:                                                                                                                                                                     | -                     |   Cr4-1               |   -
2508:                                                                                                                                                                     | -                     |   Cr4-2               |   -
2509:                                                                                                                                                                     | -                     |   Cr4-3               |   -
2510:                                                                                                                                                                     | -                     |   Cr4-4               |   -
2511:                                                                                                                                                                     | -                     |   Cr4-5               |   -
2512:                                                                                                                                                                     | -                     |   Cr4-6               |   -
2513:                                                                                                                                                                     | -                     |   Cr4-7               |   -
2514:                                                                                                                                                                     | -                     |   Cr4-8               |   -
2515:                                                                                                                                                                     | -                     |   Cr4-9               |   -
2516:                                                                                                                                                                     | -                     |   Cr4-10              |   -
2517:                                                                                                                                                                     | -                     |   Cr4-11              |   -
2518:                                                                                                                                                                     | -                     |   Cr4-12              |   -
2519:                                                                                                                                                                     | -                     |   Cr4-13              |   -
2520:                                                                                                                                                                     | -                     |   Cr4-14              |   -
2521:                                                                                                                                                                     | -                     |   Cr4-15              |   -
2522:     or          R4,R4                                                                                                                                               | Rr4                   |   -                   |   Wr4
2523:                                                                                                                                                                     | -                     |   Cr4                 |   -
2524:     shlq        #nb_bits_virgule_offset,R4                                                                                                                          | Rr4                   |   -                   |   Wr4
2525:                                                                                                                                                                     | -                     |   Cr4                 |   -
2526:     div         R0,R4           ; (3546895 / note) / frequence I2S en 16:16                                                                                         | Rr0   & Rr4           |   -                   |   Wr4
2527:                                                                                                                                                                     | -                     |   Cr4-1               |   -
2528:                                                                                                                                                                     | -                     |   Cr4-2               |   -
2529:                                                                                                                                                                     | -                     |   Cr4-3               |   -
2530:                                                                                                                                                                     | -                     |   Cr4-4               |   -
2531:                                                                                                                                                                     | -                     |   Cr4-5               |   -
2532:                                                                                                                                                                     | -                     |   Cr4-6               |   -
2533:                                                                                                                                                                     | -                     |   Cr4-7               |   -
2534:                                                                                                                                                                     | -                     |   Cr4-8               |   -
2535:                                                                                                                                                                     | -                     |   Cr4-9               |   -
2536:                                                                                                                                                                     | -                     |   Cr4-10              |   -
2537:                                                                                                                                                                     | -                     |   Cr4-11              |   -
2538:                                                                                                                                                                     | -                     |   Cr4-12              |   -
2539:                                                                                                                                                                     | -                     |   Cr4-13              |   -
2540:                                                                                                                                                                     | -                     |   Cr4-14              |   -
2541:                                                                                                                                                                     | -                     |   Cr4-15              |   -
2542:     or          R4,R4                                                                                                                                               | Rr4                   |   -                   |   Wr4
2543:                                                                                                                                                                     | -                     |   Cr4                 |   -
2544: .22:
2545:     store       R4,(R1)                                                                                                                                             | Rr4   & Rr1           |   -                   |   Wr4
2546: 
2547: ; conversion period => increment voie 2
2548:     movei       #LSP_DSP_PAULA_AUD2PER,R2                                                                                                                           | Rword1                |   Mr1                 |   -
2549:                                                                                                                                                                     | Rword2                |   word1               |   MWrite
2550:     movei       #LSP_DSP_PAULA_internal_increment2,R1                                                                                                               | Rword1                |   -                   |   word2word1 > Wr2
2551:                                                                                                                                                                     | Rword2                |   word1               |   -
2552:     move        R3,R4                                                                                                                                               | Rr3                   |   -                   |   word2word1 > Wr1
2553:     load        (R2),R2                                                                                                                                             | Rr2                   |   -                   |   Wr4
2554:                                                                                                                                                                     | -                     |   Mr2                 |   -
2555:     cmpq        #0,R2                                                                                                                                               | Rr2                   |   -                   |   Wr2
2556:                                                                                                                                                                     | -                     |   Cflags              |   -
2557:     jr          ne,.13                                                                                                                                              | Rflags                |   -                   |   Wflags
2558:     nop                                                                                                                                                             | -                     |   ? > WPC             |   -
2559:     moveq       #0,R4                                                                                                                                               | #0                    |   -                   |   -
2560:     jr          .23                                                                                                                                                 | -                     |   -                   |   Wr4
2561:     nop                                                                                                                                                             | -                     |   WPC                 |   -
2562: .13:
2563:     div         R2,R4           ; (3546895 / note)                                                                                                                  | Rr2   & Rr4           |   -                   |   -
2564:                                                                                                                                                                     | -                     |   Cr4-1               |   -
2565:                                                                                                                                                                     | -                     |   Cr4-2               |   -
2566:                                                                                                                                                                     | -                     |   Cr4-3               |   -
2567:                                                                                                                                                                     | -                     |   Cr4-4               |   -
2568:                                                                                                                                                                     | -                     |   Cr4-5               |   -
2569:                                                                                                                                                                     | -                     |   Cr4-6               |   -
2570:                                                                                                                                                                     | -                     |   Cr4-7               |   -
2571:                                                                                                                                                                     | -                     |   Cr4-8               |   -
2572:                                                                                                                                                                     | -                     |   Cr4-9               |   -
2573:                                                                                                                                                                     | -                     |   Cr4-10              |   -
2574:                                                                                                                                                                     | -                     |   Cr4-11              |   -
2575:                                                                                                                                                                     | -                     |   Cr4-12              |   -
2576:                                                                                                                                                                     | -                     |   Cr4-13              |   -
2577:                                                                                                                                                                     | -                     |   Cr4-14              |   -
2578:                                                                                                                                                                     | -                     |   Cr4-15              |   -
2579:     or          R4,R4                                                                                                                                               | Rr4                   |   -                   |   Wr4
2580:                                                                                                                                                                     | -                     |   Cr4                 |   -
2581:     shlq        #nb_bits_virgule_offset,R4                                                                                                                          | Rr4                   |   -                   |   Wr4
2582:                                                                                                                                                                     | -                     |   Cr4                 |   -
2583:     div         R0,R4           ; (3546895 / note) / frequence I2S en 16:16                                                                                         | Rr0   & Rr4           |   -                   |   Wr4
2584:                                                                                                                                                                     | -                     |   Cr4-1               |   -
2585:                                                                                                                                                                     | -                     |   Cr4-2               |   -
2586:                                                                                                                                                                     | -                     |   Cr4-3               |   -
2587:                                                                                                                                                                     | -                     |   Cr4-4               |   -
2588:                                                                                                                                                                     | -                     |   Cr4-5               |   -
2589:                                                                                                                                                                     | -                     |   Cr4-6               |   -
2590:                                                                                                                                                                     | -                     |   Cr4-7               |   -
2591:                                                                                                                                                                     | -                     |   Cr4-8               |   -
2592:                                                                                                                                                                     | -                     |   Cr4-9               |   -
2593:                                                                                                                                                                     | -                     |   Cr4-10              |   -
2594:                                                                                                                                                                     | -                     |   Cr4-11              |   -
2595:                                                                                                                                                                     | -                     |   Cr4-12              |   -
2596:                                                                                                                                                                     | -                     |   Cr4-13              |   -
2597:                                                                                                                                                                     | -                     |   Cr4-14              |   -
2598:                                                                                                                                                                     | -                     |   Cr4-15              |   -
2599:     or          R4,R4                                                                                                                                               | Rr4                   |   -                   |   Wr4
2600:                                                                                                                                                                     | -                     |   Cr4                 |   -
2601: .23:
2602:     store       R4,(R1)                                                                                                                                             | Rr4   & Rr1           |   -                   |   Wr4
2603: 
2604: ; conversion period => increment voie 3
2605:     movei       #LSP_DSP_PAULA_AUD3PER,R2                                                                                                                           | Rword1                |   Mr1                 |   -
2606:                                                                                                                                                                     | Rword2                |   word1               |   Mwrite
2607:     movei       #LSP_DSP_PAULA_internal_increment3,R1                                                                                                               | Rword1                |   -                   |   word2word1 > Wr2
2608:                                                                                                                                                                     | Rword2                |   word1               |   -
2609:     move        R3,R4                                                                                                                                               | Rr3                   |   -                   |   word2word1 > Wr1
2610:     load        (R2),R2                                                                                                                                             | Rr2                   |   -                   |   Wr4
2611:                                                                                                                                                                     | -                     |   Mr2                 |   -
2612:     cmpq        #0,R2                                                                                                                                               | Rr2                   |   -                   |   Wr2
2613:                                                                                                                                                                     | -                     |   Cflags              |   -
2614:     jr          ne,.14                                                                                                                                              | Rflags                |   -                   |   Wflags
2615:     nop                                                                                                                                                             | -                     |   ? > WPC             |   -
2616:     moveq       #0,R4                                                                                                                                               | #0                    |   -                   |   -
2617:     jr          .24                                                                                                                                                 | -                     |   -                   |   Wr4
2618:     nop                                                                                                                                                             | -                     |   WPC                 |   -
2619: .14:
2620:     div         R2,R4           ; (3546895 / note)                                                                                                                  | Rr2   & Rr4           |   -                   |   -
2621:                                                                                                                                                                     | -                     |   Cr4-1               |   -
2622:                                                                                                                                                                     | -                     |   Cr4-2               |   -
2623:                                                                                                                                                                     | -                     |   Cr4-3               |   -
2624:                                                                                                                                                                     | -                     |   Cr4-4               |   -
2625:                                                                                                                                                                     | -                     |   Cr4-5               |   -
2626:                                                                                                                                                                     | -                     |   Cr4-6               |   -
2627:                                                                                                                                                                     | -                     |   Cr4-7               |   -
2628:                                                                                                                                                                     | -                     |   Cr4-8               |   -
2629:                                                                                                                                                                     | -                     |   Cr4-9               |   -
2630:                                                                                                                                                                     | -                     |   Cr4-10              |   -
2631:                                                                                                                                                                     | -                     |   Cr4-11              |   -
2632:                                                                                                                                                                     | -                     |   Cr4-12              |   -
2633:                                                                                                                                                                     | -                     |   Cr4-13              |   -
2634:                                                                                                                                                                     | -                     |   Cr4-14              |   -
2635:                                                                                                                                                                     | -                     |   Cr4-15              |   -
2636:     or          R4,R4                                                                                                                                               | Rr4                   |   -                   |   Wr4
2637:                                                                                                                                                                     | -                     |   Cr4                 |   -
2638:     shlq        #nb_bits_virgule_offset,R4                                                                                                                          | Rr4                   |   -                   |   Wr4
2639:                                                                                                                                                                     | -                     |   Cr4                 |   -
2640:     div         R0,R4           ; (3546895 / note) / frequence I2S en 16:16                                                                                         | Rr0   & Rr4           |   -                   |   -
2641:                                                                                                                                                                     | -                     |   Cr4-1               |   -
2642:                                                                                                                                                                     | -                     |   Cr4-2               |   -
2643:                                                                                                                                                                     | -                     |   Cr4-3               |   -
2644:                                                                                                                                                                     | -                     |   Cr4-4               |   -
2645:                                                                                                                                                                     | -                     |   Cr4-5               |   -
2646:                                                                                                                                                                     | -                     |   Cr4-6               |   -
2647:                                                                                                                                                                     | -                     |   Cr4-7               |   -
2648:                                                                                                                                                                     | -                     |   Cr4-8               |   -
2649:                                                                                                                                                                     | -                     |   Cr4-9               |   -
2650:                                                                                                                                                                     | -                     |   Cr4-10              |   -
2651:                                                                                                                                                                     | -                     |   Cr4-11              |   -
2652:                                                                                                                                                                     | -                     |   Cr4-12              |   -
2653:                                                                                                                                                                     | -                     |   Cr4-13              |   -
2654:                                                                                                                                                                     | -                     |   Cr4-14              |   -
2655:                                                                                                                                                                     | -                     |   Cr4-15              |   -
2656:     or          R4,R4                                                                                                                                               | Rr4                   |   -                   |   Wr4
2657:                                                                                                                                                                     | -                     |   Cr4                 |   -
2658: .24:
2659:     store       R4,(R1)                                                                                                                                             | Rr4   & Rr1           |   -                   |   -
2660: 
2661: ;--------------------------------------------------
2662: 
2663:    
2664: ;------------------------------------  
2665: ; return from interrupt Timer 1
2666:     load    (r31),r12   ; return address                                                                                                                            | Rr31                  |   Mr1                 |   -
2667:     ;bset   #10,r13     ; clear latch 1 = I2S
2668:     bset    #11,r13     ; clear latch 1 = timer 1                                                                                                                   | Rr13                  |   Mr31                |   MWrite
2669:                                                                                                                                                                     | -                     |   Cr13                |   -
2670:     ;bset   #12,r13     ; clear latch 1 = timer 2
2671:     bclr    #3,r13      ; clear IMASK                                                                                                                               | Rr13                  |   -                   |   Wr13
2672:     addq    #4,r31      ; pop from stack                                                                                                                            | Rr31                  |   Cr13                |   -
2673:     addqt   #2,r12      ; next instruction                                                                                                                          | Rr12                  |   Cr31                |   Wr13
2674:                                                                                                                                                                     | -                     |   Cr12                |   -
2675:     jump    t,(r12)     ; return                                                                                                                                    | Rr12                  |   -                   |   Wr12
2676:     store   r13,(r16)   ; restore flags                                                                                                                             | Rr13  & Rr16          |   WPC                 |   -
2677: 
2678: ;------------------------------------  
2679: ;rewind
2680: DSP_LSP_Timer1_r_rewind:
2681: ;   movei       #LSPVars,R14
2682: ;   load        (R14),R0                    ; R0 = byte stream
2683:     load        (R14+8),R0          ; bouclage : R0 = byte stream / m_byteStreamLoop = 8                                                                            | Rr14                  |   -                   |   -
2684:                                                                                                                                                                     | -                     |   Cr14+8              |   -
2685:     movei       #DSP_LSP_Timer1_process,R12                                                                                                                         | Rword1                |           Mr14+8      |   -
2686:                                                                                                                                                                     | Rword2                |   word1               |   Wr0
2687:     load        (R14+9),R3          ; m_wordStreamLoop=9                                                                                                            | Rr14                  |   -                   |   word2word1 > Wr12
2688:                                                                                                                                                                     | -                     |   Cr14+9              |   -
2689:     jump        (R12)                                                                                                                                               | Rr12                  |           Mr14+9      |   -
2690:     store       R3,(R14+1)              ; m_wordStream=1                                                                                                            | Rr3   & Rr14          |   -                   |   -
2691:                                                                                                                                                                     | -                     |   Cr14+1  WPC         |   -
2692: 
2693: ;------------------------------------  
2694: ; change bpm
2695: DSP_LSP_Timer1_r_chgbpm:
2696:     movei       #DSP_LSP_Timer1_process,R12                                                                                                                         | Rword1                |   -                   |   -
2697:                                                                                                                                                                     | Rword2                |   word1               |   -
2698:     loadb       (R0),R11                                                                                                                                            | Rr0                   |   -                   |   word2word1 > Wr12
2699:                                                                                                                                                                     | -                     |   Mr0                 |   -
2700:     store       R11,(R14+7)     ; R3=nouveau bpm / m_currentBpm = 7                                                                                                 | Rr11  & Rr14          |   -                   |   Wr11
2701:                                                                                                                                                                     | -                     |   Cr14+7              |   -
2702: ;application nouveau bpm dans Timer 1
2703:     movei   #60*256,R10                                                                                                                                             | Rword1                |           Mr14+7      |   -
2704:                                                                                                                                                                     | Rword2                |   word1               |   Mwrite
2705:     ;shlq   #8,R10              ; 16 bits de virgule
2706:     div     R11,R10             ; 60/bpm                                                                                                                            | Rr11  & Rr10          |   -                   |   Wr10
2707:     movei   #24*65536,R9                ; 24=> 5 bits                                                                                                               | Rword1                |   Cr10-1              |   -
2708:                                                                                                                                                                     | Rword2                |   Cr10-2  word1       |   -
2709:                                                                                                                                                                     | -                     |   Cr10-3              |   word2word1 > Wr9
2710:                                                                                                                                                                     | -                     |   Cr10-4              |   -
2711:                                                                                                                                                                     | -                     |   Cr10-5              |   -
2712:                                                                                                                                                                     | -                     |   Cr10-6              |   -
2713:                                                                                                                                                                     | -                     |   Cr10-7              |   -
2714:                                                                                                                                                                     | -                     |   Cr10-8              |   -
2715:                                                                                                                                                                     | -                     |   Cr10-9              |   -
2716:                                                                                                                                                                     | -                     |   Cr10-10             |   -
2717:                                                                                                                                                                     | -                     |   Cr10-11             |   -
2718:                                                                                                                                                                     | -                     |   Cr10-12             |   -
2719:                                                                                                                                                                     | -                     |   Cr10-13             |   -
2720:                                                                                                                                                                     | -                     |   Cr10-14             |   -
2721:                                                                                                                                                                     | -                     |   Cr10-15             |   -
2722:     or      R10,R10                                                                                                                                                 | Rr10                  |   -                   |   Wr10
2723:                                                                                                                                                                     | -                     |   Cr10                |   -
2724:     ;shlq   #16,R9
2725:     div     R10,R9              ; R9=                                                                                                                               | Rr10  & Rr9           |   -                   |   Wr10
2726:                                                                                                                                                                     | -                     |   Cr9-1               |   -
2727:                                                                                                                                                                     | -                     |   Cr9-2               |   -
2728:                                                                                                                                                                     | -                     |   Cr9-3               |   -
2729:                                                                                                                                                                     | -                     |   Cr9-4               |   -
2730:                                                                                                                                                                     | -                     |   Cr9-5               |   -
2731:                                                                                                                                                                     | -                     |   Cr9-6               |   -
2732:                                                                                                                                                                     | -                     |   Cr9-7               |   -
2733:                                                                                                                                                                     | -                     |   Cr9-8               |   -
2734:                                                                                                                                                                     | -                     |   Cr9-9               |   -
2735:                                                                                                                                                                     | -                     |   Cr9-10              |   -
2736:                                                                                                                                                                     | -                     |   Cr9-11              |   -
2737:                                                                                                                                                                     | -                     |   Cr9-12              |   -
2738:                                                                                                                                                                     | -                     |   Cr9-13              |   -
2739:                                                                                                                                                                     | -                     |   Cr9-14              |   -
2740:                                                                                                                                                                     | -                     |   Cr9-15              |   -
2741:     or      R9,R9                                                                                                                                                   | Rr9                   |   -                   |   Wr9
2742:                                                                                                                                                                     |-                      |   Cr9                 |   -
2743:     shrq    #8,R9               ; R9=frequence replay                                                                                                               | Rr9                   |   -                   |   Wr9
2744:     ;move   R9,R11  
2745: ; frequence du timer 1
2746:     movei   #182150,R10             ; 26593900 / 146 = 182150                                                                                                       | Rword1                |   Cr9                 |   -
2747:                                                                                                                                                                     | Rword2                |   word1               |   Wr9
2748:     div     R9,R10                                                                                                                                                  | Rr9   & Rr10          |   -                   |   word2word1 > Wr10
2749:                                                                                                                                                                     | -                     |   Cr10-1              |   -
2750:                                                                                                                                                                     | -                     |   Cr10-2              |   -
2751:                                                                                                                                                                     | -                     |   Cr10-3              |   -
2752:                                                                                                                                                                     | -                     |   Cr10-4              |   -
2753:                                                                                                                                                                     | -                     |   Cr10-5              |   -
2754:                                                                                                                                                                     | -                     |   Cr10-6              |   -
2755:                                                                                                                                                                     | -                     |   Cr10-7              |   -
2756:                                                                                                                                                                     | -                     |   Cr10-8              |   -
2757:                                                                                                                                                                     | -                     |   Cr10-9              |   -
2758:                                                                                                                                                                     | -                     |   Cr10-10             |   -
2759:                                                                                                                                                                     | -                     |   Cr10-11             |   -
2760:                                                                                                                                                                     | -                     |   Cr10-12             |   -
2761:                                                                                                                                                                     | -                     |   Cr10-13             |   -
2762:                                                                                                                                                                     | -                     |   Cr10-14             |   -
2763:                                                                                                                                                                     | -                     |   Cr10-15             |   -
2764:     or      R10,R10                                                                                                                                                 | Rr10                  |   -                   |   Wr10
2765:                                                                                                                                                                     | -                     |   Cr10                |   -
2766:     move    R10,R13                                                                                                                                                 | Rr10                  |   -                   |   Wr10
2767:     subq    #1,R13                  ; -1 pour parametrage du timer 1                                                                                                | Rr13                  |   -                   |   Wr13
2768: ; 26593900 / 50 = 531�878 => 2 � 73 � 3643 => 146*3643
2769:     movei   #JPIT1,r10              ; F10000                                                                                                                        | Rword1                |   Cr13                |   -
2770:                                                                                                                                                                     | Rword2                |   word1               |   Wr13
2771:     movei   #145*65536,r9               ; Timer 1 Pre-scaler                                                                                                        | Rword1                |   -                   |   word2word1 > Wr10
2772:                                                                                                                                                                     | Rword2                |   word1               |   -
2773:     ;shlq   #16,r12
2774:     or      R13,R9                                                                                                                                                  | Rr13  & Rr9           |   -                   |   word2word1 > Wr9
2775:                                                                                                                                                                     | -                     |   Cr9                 |   -
2776:     store   r9,(r10)                ; JPIT1 & JPIT2                                                                                                                 | Rr9   & Rr10          |   -                   |   Wr9
2777:     jump        (R12)                                                                                                                                               | Rr12                  |   Mr10                |   -
2778:     addq        #1,R0                                                                                                                                               | Rr0                   |   WPC                 |   -
2779: 
2780: 
2781: 
2782: 
2783: ; ------------------- N/A ------------------
2784: DSP_LSP_routine_interruption_Timer2:
2785: ; ------------------- N/A ------------------
2786: 
2787: 
2788: 
2789: ; ------------- main DSP ------------------
2790: DSP_routine_init_DSP:
2791: ; assume run from bank 1
2792:     movei   #DSP_ISP+(DSP_STACK_SIZE*4),r31         ; init isp                                                                                                      | Rword1                |   -                   |   -
2793:                                                                                                                                                                     | Rword2                |   word1               |   -
2794:     moveq   #0,r1                                                                                                                                                   | #0                    |   -                   |   -
2795:     moveta  r31,r31                                 ; ISP (bank 0)                                                                                                  | Rr31                  |   -                   |   Wr1
2796:     nop                                                                                                                                                             | -                     |   -                   |   Wr'31
2797:     movei   #DSP_USP+(DSP_STACK_SIZE*4),r31         ; init usp                                                                                                      | Rword1                |   -                   |   -
2798:                                                                                                                                                                     | Rword2                |   word1               |   -
2799: 
2800: ; calculs des frequences deplac� dans DSP
2801: ; sclk I2S
2802:     movei   #LSP_DSP_Audio_frequence,R0                                                                                                                             | Rword1                |   -                   |   word2word1 > Wr31
2803:                                                                                                                                                                     | Rword2                |   word1               |   -
2804:     movei   #frequence_Video_Clock_divisee,R1                                                                                                                       | Rword1                |   -                   |   word2word1 > Wr0
2805:                                                                                                                                                                     | Rword2                |   word1               |   -
2806:     load    (R1),R1                                                                                                                                                 | Rr1                   |   -                   |   word2word1 > Wr1
2807:                                                                                                                                                                     | -                     |   Mr1                 |   -
2808:     shlq    #8,R1                                                                                                                                                   | Rr1                   |   -                   |   Wr1
2809:                                                                                                                                                                     | -                     |   Cr1                 |   -
2810:     div     R0,R1                                                                                                                                                   | Rr0   & Rr1           |   -                   |   Wr1
2811:     movei   #128,R2                                                                                                                                                 | Rword1                |   Cr1-1               |   -
2812:                                                                                                                                                                     | Rword2                |   Cr1-2   word1       |   -
2813:                                                                                                                                                                     | -                     |   Cr1-3               |   word2word1 > Wr2
2814:                                                                                                                                                                     | -                     |   Cr1-4               |   -
2815:                                                                                                                                                                     | -                     |   Cr1-5               |   -
2816:                                                                                                                                                                     | -                     |   Cr1-6               |   -
2817:                                                                                                                                                                     | -                     |   Cr1-7               |   -
2818:                                                                                                                                                                     | -                     |   Cr1-8               |   -
2819:                                                                                                                                                                     | -                     |   Cr1-9               |   -
2820:                                                                                                                                                                     | -                     |   Cr1-10              |   -
2821:                                                                                                                                                                     | -                     |   Cr1-11              |   -
2822:                                                                                                                                                                     | -                     |   Cr1-12              |   -
2823:                                                                                                                                                                     | -                     |   Cr1-13              |   -
2824:                                                                                                                                                                     | -                     |   Cr1-14              |   -
2825:                                                                                                                                                                     | -                     |   Cr1-15              |   -
2826:     add     R2,R1           ; +128 = +0.5                                                                                                                           | Rr2   & Rr1           |   -                   |   Wr1
2827:                                                                                                                                                                     | -                     |   Cr1                 |   -
2828:     shrq    #8,R1                                                                                                                                                   | Rr1                   |   -                   |   Wr1
2829:                                                                                                                                                                     | -                     |   Cr1                 |   -
2830:     subq    #1,R1                                                                                                                                                   | Rr1                   |   -                   |   Wr1
2831:     movei   #DSP_parametre_de_frequence_I2S,r2                                                                                                                      | Rword1                |   Cr1                 |   -
2832:                                                                                                                                                                     | Rword2                |   word1               |   Wr1
2833:     store   R1,(R2)                                                                                                                                                 | Rr1   & Rr2           |   -                   |   Wr2
2834: ;calcul inverse
2835:     addq    #1,R1                                                                                                                                                   | Rr1                   |   Mr2                 |   -
2836:                                                                                                                                                                     | -                     |   Cr1                 |   MWrite
2837:     add     R1,R1           ; *2                                                                                                                                    | Rr1                   |   -                   |   Wr1
2838:                                                                                                                                                                     | -                     |   Cr1                 |   -
2839:     add     R1,R1           ; *2                                                                                                                                    | Rr1                   |   -                   |   Wr1
2840:                                                                                                                                                                     | -                     |   Cr1                 |   -
2841:     shlq    #4,R1           ; *16                                                                                                                                   | Rr1                   |   -                   |   Wr1
2842:     movei   #frequence_Video_Clock,R0                                                                                                                               | Rword1                |   Cr1                 |   -
2843:                                                                                                                                                                     | Rword2                |   word1               |   Wr1
2844:     load    (R0),R0                                                                                                                                                 | Rr0                   |   -                   |   word2word1 > Wr0
2845:                                                                                                                                                                     | -                     |   Mr0                 |   -
2846:     div     R1,R0                                                                                                                                                   | Rr1   & Rr0           |   -                   |   Wr0
2847:     movei   #DSP_frequence_de_replay_reelle_I2S,R2                                                                                                                  | Rword1                |   Cr0-1               |   -
2848:                                                                                                                                                                     | Rword2                |   Cr0-2       word1   |   -
2849:                                                                                                                                                                     | -                     |   Cr0-3               |   word2word1 > Wr2
2850:                                                                                                                                                                     | -                     |   Cr0-4               |   -
2851:                                                                                                                                                                     | -                     |   Cr0-5               |   -
2852:                                                                                                                                                                     | -                     |   Cr0-6               |   -
2853:                                                                                                                                                                     | -                     |   Cr0-7               |   -
2854:                                                                                                                                                                     | -                     |   Cr0-8               |   -
2855:                                                                                                                                                                     | -                     |   Cr0-9               |   -
2856:                                                                                                                                                                     | -                     |   Cr0-10              |   -
2857:                                                                                                                                                                     | -                     |   Cr0-11              |   -
2858:                                                                                                                                                                     | -                     |   Cr0-12              |   -
2859:                                                                                                                                                                     | -                     |   Cr0-13              |   -
2860:                                                                                                                                                                     | -                     |   Cr0-14              |   -
2861:                                                                                                                                                                     | -                     |   Cr0-15              |   -
2862:     store   R0,(R2)                                                                                                                                                 | Rr0   & Rr2           |   -                   |   Wr0
2863:    
2864: 
2865: ; init I2S
2866:     movei   #SCLK,r10                                                                                                                                               | Rword1                |   Mr2                 |   -
2867:                                                                                                                                                                     | Rword2                |   word1               |   MWrite
2868:     movei   #SMODE,r11                                                                                                                                              | Rword1                |   -                   |   word2word1 > Wr10
2869:                                                                                                                                                                     | Rword2                |   word1               |   -
2870:     movei   #DSP_parametre_de_frequence_I2S,r12                                                                                                                     | Rword1                |   -                   |   word2word1 > Wr11
2871:                                                                                                                                                                     | Rword2                |   word1               |   -
2872:     movei   #%001101,r13            ; SMODE bascule sur RISING                                                                                                      | Rword1                |   -                   |   word2word1 > Wr12
2873:                                                                                                                                                                     | Rword2                |   word1               |   -
2874:     load    (r12),r12               ; SCLK                                                                                                                          | Rr12                  |   -                   |   word2word1 > Wr13
2875:                                                                                                                                                                     | -                     |   Mr12                |   -
2876:     store   r12,(r10)                                                                                                                                               | Rr12  & Rr10          |   -                   |   Wr12
2877:     store   r13,(r11)                                                                                                                                               | Rr13  & Rr11          |   Mr10                |   -
2878: 
2879: 
2880: ; init Timer 1
2881: ; frq = 24/(60/bpm)
2882:     movei   #LSP_BPM_frequence_replay,R11                                                                                                                           | Rword1                |   Mr11                |   MWrite
2883:                                                                                                                                                                     | Rword2                |   word1               |   MWrite
2884:     load    (R11),R11                                                                                                                                               | Rr11                  |   -                   |   word2word1 > Wr11
2885:     movei   #60*256,R10                                                                                                                                             | Rword1                |   Mr11                |   -
2886:                                                                                                                                                                     | Rword2                |   word1               |   Wr11
2887:     ;shlq   #8,R10              ; 16 bits de virgule
2888:     div     R11,R10             ; 60/bpm                                                                                                                            | Rr11  & Rr10          |   -                   |   word2word1 > Wr10
2889:     movei   #24*65536,R9                ; 24=> 5 bits                                                                                                               | Rword1                |   Cr10-1              |   -
2890:                                                                                                                                                                     | Rword2                |   Cr10-2      word1   |   -
2891:                                                                                                                                                                     | -                     |   Cr10-3              |   word2word1 > Wr9
2892:                                                                                                                                                                     | -                     |   Cr10-4              |   -
2893:                                                                                                                                                                     | -                     |   Cr10-5              |   -
2894:                                                                                                                                                                     | -                     |   Cr10-6              |   -
2895:                                                                                                                                                                     | -                     |   Cr10-7              |   -
2896:                                                                                                                                                                     | -                     |   Cr10-8              |   -
2897:                                                                                                                                                                     | -                     |   Cr10-9              |   -
2898:                                                                                                                                                                     | -                     |   Cr10-10             |   -
2899:                                                                                                                                                                     | -                     |   Cr10-11             |   -
2900:                                                                                                                                                                     | -                     |   Cr10-12             |   -
2901:                                                                                                                                                                     | -                     |   Cr10-13             |   -
2902:                                                                                                                                                                     | -                     |   Cr10-14             |   -
2903:                                                                                                                                                                     | -                     |   Cr10-15             |   -
2904:     or      R10,R10                                                                                                                                                 | Rr10                  |   -                   |   Wr10
2905:                                                                                                                                                                     | -                     |   Cr10                |   -
2906:     ;shlq   #16,R9
2907:     div     R10,R9              ; R9=                                                                                                                               | Rr10  & Rr9           |   -                   |   Wr10
2908:                                                                                                                                                                     | -                     |   Cr9-1               |   -
2909:                                                                                                                                                                     | -                     |   Cr9-2               |   -
2910:                                                                                                                                                                     | -                     |   Cr9-3               |   -
2911:                                                                                                                                                                     | -                     |   Cr9-4               |   -
2912:                                                                                                                                                                     | -                     |   Cr9-5               |   -
2913:                                                                                                                                                                     | -                     |   Cr9-6               |   -
2914:                                                                                                                                                                     | -                     |   Cr9-7               |   -
2915:                                                                                                                                                                     | -                     |   Cr9-8               |   -
2916:                                                                                                                                                                     | -                     |   Cr9-9               |   -
2917:                                                                                                                                                                     | -                     |   Cr9-10              |   -
2918:                                                                                                                                                                     | -                     |   Cr9-11              |   -
2919:                                                                                                                                                                     | -                     |   Cr9-12              |   -
2920:                                                                                                                                                                     | -                     |   Cr9-13              |   -
2921:                                                                                                                                                                     | -                     |   Cr9-14              |   -
2922:                                                                                                                                                                     | -                     |   Cr9-15              |   -
2923:     or      R9,R9                                                                                                                                                   | Rr9                   |   -                   |   Wr9
2924:                                                                                                                                                                     | -                     |   Cr9                 |   -
2925:     shrq    #8,R9               ; R9=frequence replay                                                                                                               | Rr9                   |   -                   |   Wr9
2926:                                                                                                                                                                     | -                     |   Cr9                 |   -
2927:     move    R9,R11                                                                                                                                                  | Rr9                   |   -                   |   Wr9
2928:    
2929: 
2930: ; frequence du timer 1
2931:     movei   #182150,R10             ; 26593900 / 146 = 182150                                                                                                       | Rword1                |   -                   |   Wr11
2932:                                                                                                                                                                     | Rword2                |   word1               |   -
2933:     div     R11,R10                                                                                                                                                 | Rr11  & Rr10          |   -                   |   word2word1 > Wr10
2934:                                                                                                                                                                     | -                     |   Cr10-1              |   -
2935:                                                                                                                                                                     | -                     |   Cr10-2              |   -
2936:                                                                                                                                                                     | -                     |   Cr10-3              |   -
2937:                                                                                                                                                                     | -                     |   Cr10-4              |   -
2938:                                                                                                                                                                     | -                     |   Cr10-5              |   -
2939:                                                                                                                                                                     | -                     |   Cr10-6              |   -
2940:                                                                                                                                                                     | -                     |   Cr10-7              |   -
2941:                                                                                                                                                                     | -                     |   Cr10-8              |   -
2942:                                                                                                                                                                     | -                     |   Cr10-9              |   -
2943:                                                                                                                                                                     | -                     |   Cr10-10             |   -
2944:                                                                                                                                                                     | -                     |   Cr10-11             |   -
2945:                                                                                                                                                                     | -                     |   Cr10-12             |   -
2946:                                                                                                                                                                     | -                     |   Cr10-13             |   -
2947:                                                                                                                                                                     | -                     |   Cr10-14             |   -
2948:                                                                                                                                                                     | -                     |   Cr10-15             |   -
2949:     or      R10,R10                                                                                                                                                 | Rr10                  |   -                   |   Wr10
2950:                                                                                                                                                                     | -                     |   Cr10                |   -
2951:     move    R10,R13                                                                                                                                                 | Rr10                  |   -                   |   Wr10
2952:        
2953:     subq    #1,R13                  ; -1 pour parametrage du timer 1                                                                                                | Rr13                  |   -                   |   Wr13
2954:    
2955:    
2956: 
2957: ; 26593900 / 50 = 531�878 => 2 � 73 � 3643 => 146*3643
2958:     movei   #JPIT1,r10              ; F10000                                                                                                                        | Rword1                |   Cr13                |   -
2959:                                                                                                                                                                     | Rword2                |   word1               |   Wr13
2960:     ;movei  #JPIT2,r11              ; F10002
2961:     movei   #145*65536,r12              ; Timer 1 Pre-scaler                                                                                                        | Rword1                |   -                   |   word2word1 > Wr10
2962:                                                                                                                                                                     | Rword2                |   word1               |   -
2963:     ;shlq   #16,r12
2964:     or      R13,R12                                                                                                                                                 | Rr13  & Rr12          |   -                   |   word2word1 > Wr12
2965:                                                                                                                                                                     |-                      |   Cr12                |   -
2966:     store   r12,(r10)               ; JPIT1 & JPIT2                                                                                                                 | Rr12  & Rr10          |   -                   |   Wr12
2967: 
2968: 
2969: ; init timer 2
2970: 
2971: ;   movei   #JPIT3,r10              ; F10004
2972: ;   movei   #JPIT4,r11              ; F10006
2973: 
2974: 
2975: 
2976: ; enable interrupts
2977:     movei   #D_FLAGS,r28                                                                                                                                            | Rword1                |   Mr10                |   -
2978:                                                                                                                                                                     | Rword2                |   word1               |   MWrite
2979:    
2980:     movei   #D_I2SENA|D_TIM1ENA|REGPAGE,r29         ; I2S+Timer 1                                                                                                   | Rword1                |   -                   |   word2word1 > Wr28
2981:                                                                                                                                                                     | Rword2                |   word1               |   -
2982:     ;movei  #D_I2SENA|REGPAGE,r29                   ; I2S only
2983:    
2984:    
2985:     ;movei  #D_TIM1ENA|REGPAGE,r29                  ; Timer 1 only
2986:     ;movei  #D_TIM2ENA|REGPAGE,r29                  ; Timer 2 only
2987: 
2988:     store   r29,(r28)                                                                                                                                               | Rr29  & Rr28          |   -                   |   word2word1 > Wr29
2989: 
2990: DSP_boucle_centrale:
2991:     movei   #DSP_boucle_centrale,R20                                                                                                                                | Rword1                |   Mr28                |   -
2992:                                                                                                                                                                     | Rword2                |   word1               |   MWrite
2993:     jump    (R20)                                                                                                                                                   | Rr20                  |   -                   |   word2word1 > Wr20
2994:     nop                                                                                                                                                             | -                     |   WPC                 |   -
2995:    
2996:    
2997:     .phrase
2998: 
2999: DSP_frequence_de_replay_reelle_I2S:                 dc.l            0
3000: DSP_UN_sur_frequence_de_replay_reelle_I2S:          dc.l            0
3001: DSP_parametre_de_frequence_I2S:                     dc.l            0
3002: 
3003: ; variables Paula
3004: ; channel 0
3005: LSP_DSP_PAULA_AUD0L:                dc.l            silence<<nb_bits_virgule_offset         ; Audio channel 0 location
3006: LSP_DSP_PAULA_AUD0LEN:              dc.l            (silence+4)<<nb_bits_virgule_offset         ; en bytes !
3007: LSP_DSP_PAULA_AUD0PER:              dc.l            0               ; period , a transformer en increment
3008: LSP_DSP_PAULA_AUD0VOL:              dc.l            0               ; volume
3009: LSP_DSP_PAULA_AUD0DAT:              dc.l            0               ; long word en cours d'utilisation / stock� / buffering
3010: LSP_DSP_PAULA_internal_location0:   dc.l            silence<<nb_bits_virgule_offset             ; internal register : location of the sample currently played
3011: LSP_DSP_PAULA_internal_increment0:  dc.l            0               ; internal register : increment linked to period 16:16
3012: LSP_DSP_PAULA_internal_length0:     dc.l            (silence+4)<<nb_bits_virgule_offset         ; internal register : length of the sample currently played
3013: LSP_DSP_repeat_pointeur0:           dc.l            silence<<nb_bits_virgule_offset
3014: LSP_DSP_repeat_length0:             dc.l            (silence+4)<<nb_bits_virgule_offset
3015: ; channel 1
3016: LSP_DSP_PAULA_AUD1L:                dc.l            silence<<nb_bits_virgule_offset         ; Audio channel 0 location
3017: LSP_DSP_PAULA_AUD1LEN:              dc.l            (silence+4)<<nb_bits_virgule_offset         ; en bytes !
3018: LSP_DSP_PAULA_AUD1PER:              dc.l            0               ; period , a transformer en increment
3019: LSP_DSP_PAULA_AUD1VOL:              dc.l            0               ; volume
3020: LSP_DSP_PAULA_AUD1DAT:              dc.l            0               ; long word en cours d'utilisation / stock� / buffering
3021: LSP_DSP_PAULA_internal_location1:   dc.l            silence<<nb_bits_virgule_offset             ; internal register : location of the sample currently played
3022: LSP_DSP_PAULA_internal_increment1:  dc.l            0               ; internal register : increment linked to period 16:16
3023: LSP_DSP_PAULA_internal_length1:     dc.l            (silence+4)<<nb_bits_virgule_offset         ; internal register : length of the sample currently played
3024: LSP_DSP_repeat_pointeur1:           dc.l            silence<<nb_bits_virgule_offset
3025: LSP_DSP_repeat_length1:             dc.l            (silence+4)<<nb_bits_virgule_offset
3026: ; channel 2
3027: LSP_DSP_PAULA_AUD2L:                dc.l            silence<<nb_bits_virgule_offset         ; Audio channel 0 location
3028: LSP_DSP_PAULA_AUD2LEN:              dc.l            (silence+4)<<nb_bits_virgule_offset         ; en bytes !
3029: LSP_DSP_PAULA_AUD2PER:              dc.l            0               ; period , a transformer en increment
3030: LSP_DSP_PAULA_AUD2VOL:              dc.l            0               ; volume
3031: LSP_DSP_PAULA_AUD2DAT:              dc.l            0               ; long word en cours d'utilisation / stock� / buffering
3032: LSP_DSP_PAULA_internal_location2:   dc.l            silence<<nb_bits_virgule_offset             ; internal register : location of the sample currently played
3033: LSP_DSP_PAULA_internal_increment2:  dc.l            0               ; internal register : increment linked to period 16:16
3034: LSP_DSP_PAULA_internal_length2:     dc.l            (silence+4)<<nb_bits_virgule_offset         ; internal register : length of the sample currently played
3035: LSP_DSP_repeat_pointeur2:           dc.l            silence<<nb_bits_virgule_offset
3036: LSP_DSP_repeat_length2:             dc.l            (silence+4)<<nb_bits_virgule_offset
3037: ; channel 3
3038: LSP_DSP_PAULA_AUD3L:                dc.l            silence<<nb_bits_virgule_offset         ; Audio channel 0 location
3039: LSP_DSP_PAULA_AUD3LEN:              dc.l            (silence+4)<<nb_bits_virgule_offset         ; en bytes !
3040: LSP_DSP_PAULA_AUD3PER:              dc.l            0               ; period , a transformer en increment
3041: LSP_DSP_PAULA_AUD3VOL:              dc.l            0               ; volume
3042: LSP_DSP_PAULA_AUD3DAT:              dc.l            0               ; long word en cours d'utilisation / stock� / buffering
3043: LSP_DSP_PAULA_internal_location3:   dc.l            silence<<nb_bits_virgule_offset             ; internal register : location of the sample currently played
3044: LSP_DSP_PAULA_internal_increment3:  dc.l            0               ; internal register : increment linked to period 16:16
3045: LSP_DSP_PAULA_internal_length3:     dc.l            (silence+4)<<nb_bits_virgule_offset         ; internal register : length of the sample currently played
3046: LSP_DSP_repeat_pointeur3:           dc.l            silence<<nb_bits_virgule_offset
3047: LSP_DSP_repeat_length3:             dc.l            (silence+4)<<nb_bits_virgule_offset
3048: 
3049: 
3050: LSPVars:
3051: m_byteStream:       dc.l    0   ;  0 :  byte stream                         0
3052: m_wordStream:       dc.l    0   ;  4 :  word stream                         1
3053: m_codeTableAddr:    dc.l    0   ;  8 :  code table addr                     2
3054: m_escCodeRewind:    dc.l    0   ; 12 :  rewind special escape code          3
3055: m_escCodeSetBpm:    dc.l    0   ; 16 :  set BPM escape code                 4
3056: m_lspInstruments:   dc.l    0   ; 20 :  LSP instruments table addr          5
3057: m_relocDone:        dc.l    0   ; 24 :  reloc done flag                     6
3058: m_currentBpm:       dc.l    0   ; 28 :  current BPM                         7
3059: m_byteStreamLoop:   dc.l    0   ; 32 :  byte stream loop point              8
3060: m_wordStreamLoop:   dc.l    0   ; 36 :  word stream loop point              9
3061: 
3062: 
3063: 
3064: LSP_BPM_frequence_replay:       dc.l            25
3065: 
3066: EDZTMP1:        dc.l            0
3067: 
3068: ;---------------------
3069: ; FIN DE LA RAM DSP
3070: YM_DSP_fin:
3071: ;---------------------
3072: 
3073: 
3074: SOUND_DRIVER_SIZE           .equ            YM_DSP_fin-DSP_base_memoire
3075:     .print  "--- Sound driver code size (DSP): ", /u SOUND_DRIVER_SIZE, " bytes / 8192 ---"
3076: 
3077: 
3078:         .68000
3079:         .dphrase
3080: ob_liste_originale:                          ; This is the label you will use to address this in 68K code
3081:         .objproc                               ; Engage the OP assembler
3082:         .dphrase
3083: 
3084:         .org    ob_list_courante             ; Tell the OP assembler where the list will execute
3085: ;
3086:         branch      VC < 0, .stahp               ; Branch to the STOP object if VC < 0
3087:         branch      VC > 265, .stahp             ; Branch to the STOP object if VC > 241
3088:             ; bitmap data addr, xloc, yloc, dwidth, iwidth, iheight, bpp, pallete idx, flags, firstpix, pitch
3089:         bitmap      ecran1, 16, 26, nb_octets_par_ligne/8, nb_octets_par_ligne/8, 246-26,3
3090:         ;bitmap     ecran1,16,24,40,40,255,3
3091:         jump        .haha
3092: .stahp:
3093:         stop
3094: .haha:
3095:         jump        .stahp
3096:        
3097:         .68000
3098:         .dphrase
3099: fin_ob_liste_originale:
3100: 
3101: 
3102:             .data
3103:     .dphrase
3104: 
3105: stoplist:       dc.l    0,4
3106: 
3107: silence:        
3108:         dc.b            $0,$0,$0,$0
3109:         dc.b            $0,$0,$0,$0
3110:         dc.b            $0,$0,$0,$0
3111: 
3112: 
3113: debut_ram_libre_DSP:        dc.l            YM_DSP_fin
3114: debut_ram_libre:            dc.l            FIN_RAM
3115:     even
3116: 
3117: fonte:  
3118:     .include    "fonte1plan.s"
3119:     even
3120: 
3121: couleur_char:               dc.w        25
3122: curseur_x:                  dc.w        0
3123: curseur_y:                  dc.w        curseur_Y_min
3124:         even
3125:        
3126: chaine_LSP:                     dc.b    "LSP player for Jaguar",10,0
3127: chaine_playing_LSP:             dc.b    "Now playing module",10,0
3128: chaine_BPM_init_LSP:            dc.b    " bpm.",0
3129: chaine_Hz_init_LSP:             dc.b    " Hz.",10,0
3130: chaine_replay_frequency:        dc.b    "Replay frequency : ",0
3131: chaine_RAM_DSP:                 dc.b    "DSP RAM available while running : ",0
3132: chaine_entete_debug_module:     dc.b    "location incremen offset   length  ",10,0
3133: chaine_entete_debug_module2:    dc.b    "location length   period   volume",10,0
3134:         even
3135: 
3136:     .phrase
3137: LSP_module_music_data:
3138:     .incbin         "elysium.lsmusic"
3139:     ;.incbin            "LSP/d.lsmusic"
3140:     ;.incbin            "LSP/k.lsmusic"
3141:     ;.incbin            "LSP/testsamples4v.lsmusic"
3142:     .phrase
3143: LSP_module_sound_bank:
3144:     .incbin         "elysium.lsbank"
3145:     ;.incbin            "LSP/d.lsbank"
3146:     ;.incbin            "LSP/k.lsbank"
3147:     ;.incbin            "LSP/testsamples4v.lsbank"
3148:     .phrase
3149: 
3150:     .bss
3151:     .phrase
3152: DEBUT_BSS:
3153: ;EDZ_compteur_reset_offset_entier_voie_A:           ds.l    1
3154: 
3155:     .phrase
3156: frequence_Video_Clock:                  ds.l                1
3157: frequence_Video_Clock_divisee :         ds.l                1
3158: 
3159: 
3160: 
3161: _50ou60hertz:           ds.l    1
3162: ntsc_flag:              ds.w    1
3163: a_hdb:                  ds.w   1
3164: a_hde:                  ds.w   1
3165: a_vdb:                  ds.w   1
3166: a_vde:                  ds.w   1
3167: width:                  ds.w   1
3168: height:                 ds.w   1
3169: taille_liste_OP:        ds.l    1
3170: vbl_counter:            ds.l    1
3171: 
3172:             .dphrase
3173: ecran1:             ds.b        320*256             ; 8 bitplanes
3174:     .phrase
3175: FIN_RAM:
3176: 
3177: 
3178: