Advertisement
glokyfull

tested contigus routine

Nov 10th, 2023 (edited)
1,252
0
190 days
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. createContigustable
  2. ;
  3. ; a0 = ram
  4. ; d0 = nombre d'element de la table sinus
  5. ; d1 = pas interne
  6. ; d2 = nombre de copie de valeurs
  7. ; a3 = table de sinus d'amplitude final
  8. ;
  9. ; pendant le fonctionnement:
  10. ; constante  d3,d4,d5 = pas interne,*2,*4
  11. ;
  12. ;
  13. ;
  14.  
  15. ; retour:
  16. ; a0 = ram
  17. ; a1 = adresse table de d0 adresses  reftable pris a partir de la ram
  18. ;  
  19.  
  20.     move.l a0,a1        ; a1 = table refsin
  21.     move.l a1,-(sp)
  22.     move.w d0,d3
  23.     add.w d3,d3     ; *2
  24.     move.l a3,a4
  25.     add.w d3,a4
  26.     add.w d3,d3     ; *4
  27.     add.w d3,a0         ; a0 =ram
  28.  
  29.  
  30.  
  31.     lea tempbuffer,a2
  32.     move.w d0,d4
  33.     lsr #2,d4
  34.     moveq #0,d3
  35. .clearFlag
  36.     move.l d3,(a2)+
  37.     dbf d4,.clearFlag   ; +- 4 octet
  38.  
  39.     lea tempbuffer,a2
  40.     move.l a2,a5
  41.     add.w d0,a5
  42.    
  43.  
  44.  
  45.     ;moveq #0,d5            ; angle
  46.    
  47.     move.w d1,d3        ; pas interne<>0
  48.     move.w d3,d4
  49.     add d4,d4           ; pas interne*2
  50.     move.w d4,d5
  51.     add.w d5,d5         ; pas interne*4
  52.     neg.w d0
  53.     move.w d0,.auto1+2          ; nombre d'elements
  54.     move.w d0,.auto1b+2
  55.     add.w d0,d0
  56.     move.w d0,.auto2+2
  57.     move.w d0,.auto2b+2
  58.     move.w d0,.auto2c+2
  59.     add.w d0,d0
  60.     move.w d0,.auto3+2
  61.     move.w d0,.auto3b+2
  62. ;----------------------------------------
  63.     bra.s .loop
  64. .loopaddq
  65.     addq.w #2,a3
  66.     addq.w #4,a1
  67.     ; ps le tst.b (a2) deux ligne plus loin est redondant quand on sort de la boucle dans le code flaga1
  68.     move.w (a3),d7
  69.     bra.s .11
  70. .loop
  71.     move.w (a3),d7
  72.     tst.b (a2)
  73.     bne.s .flaga1
  74. .11 st.b (a2)
  75.     move.l a0,(a1)      ; on stoque l'adresse de la valeur dans table refsin
  76.     move.w d7,(a0)+
  77.     ; on met a jour a3 avec le pas interne*2
  78.     ; on met a jour a2 avec le pas interne (flags)
  79.     add.w d3,a2
  80.     add.w d4,a3
  81.     add.w d5,a1
  82.  
  83.     cmp.l a2,a5
  84.     bgt.s .loop
  85. .auto1
  86.     lea 0(a2),a2
  87. .auto2
  88.     lea 0(a3),a3
  89. .auto3
  90.     lea 0(a1),a1
  91.     bra.s .loop
  92. .flaga1
  93.     move.w d2,d6        ; nombre de copie
  94.     ;subq.w #1,d6
  95.  
  96.     move.l a3,-(sp)
  97. .cpy
  98.     move.w d7,(a0)+
  99.     add.w d4,a3
  100.     cmp.l a3,a4
  101.     bgt.s .1
  102. .auto2b
  103.     lea 0(a3),a3
  104.  
  105. .1
  106.     move.w (a3),d7
  107.     dbf d6,.cpy
  108.     move.l (sp)+,a3
  109.  
  110.     addq.w #1,a2
  111.     cmp.l a2,a5
  112.     bgt.s .2
  113. .auto1b
  114.     lea 0(a2),a2
  115. .auto2c
  116.     lea 0(a3),a3
  117. .auto3b
  118.     lea 0(a1),a1
  119. .2
  120.     ; s'assurer qu'on est pas en fin de tableau:
  121.     ;
  122.     ;
  123.  
  124.     tst.b (a2)
  125.     beq.s .loopaddq
  126. .fin
  127.     move.l (sp)+,a1
  128.  
  129.     rts
  130.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement