⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mpegsubb.a

📁 Application (fix point) for playing MP3 data on embedded systems. mp3play is designed to be able to
💻 A
📖 第 1 页 / 共 3 页
字号:
               bmi      window_band4window_band3   move.w   (a3)+,d1               muls.w   (a2)+,d1               add.l    d1,d5               dbra     d0,window_band3window_band4               add.l    a5,a3                ; buf1 += off1               move.w   d4,d0                ; d0 = cnt0               bmi      window_band6window_band5   move.w   (a4)+,d1               muls.w   (a2)+,d1               add.l    d1,d5               dbra     d0,window_band5window_band6               add.l    a6,a4                ; buf0 += off0               add.l    d2,a2                ; dewindow += offd               asr.l    d7,d5                ; sum >>= (WINDOW_FACTOR+INT_FACTOR-15)               IFD      WINDOW_CLIP               cmp.l    #-32768,d5               blt      window_band4l               cmp.l    #32767,d5               bgt      window_band4hwindow_band4n               ENDC               move.w   d5,(a1)+               dbra     d6,window_band2               IFD      WINDOW_CLIP               bra      window_band9window_band4l  move.l   #-32768,d5               bra.s    window_band4nwindow_band4h  move.l   #32767,d5               bra.s    window_band4n               ENDCwindow_band9               move.w   (sp)+,d2 ; #2               movem.l  (sp)+,d2-d7/a2-a6               rts               ; ##1 Begin               ELSE;              MULADDWIN {a3|a4}MULADDWIN      MACRO               move.w   (\1)+,d1               muls.w   (a2)+,d1               add.l    d1,d5               ENDM               ; WARING GENAM bug in rept & macros               ; rept part is moved to END of MACRO !               ;;              MULADDN <rept num>,{a3|a4}MULADDN        MACRO               IFNE     \2               REPT     \2               MULADDWIN \1               ENDR               ENDC               ENDM;              MULADD0 <rept num>MULADD0        MACRO               clr.l    d5               MULADDN  a3,\1               ENDM;              MULADD1 <rept num>MULADD1        MACRO               add.l    a5,a3               MULADDN  a4,\1               ENDM               IFD      OLD_OVERFLOW ; ##3 Begin               ; CHECKBOUNDS <loop label>CHECKBOUNDS    MACRO               add.l    a6,a4               add.l    d2,a2               asr.l    d7,d5               IFD      WINDOW_CLIP               cmp.l    #-32768,d5               blt      .window_bandl               cmp.l    #32767,d5               bgt      .window_bandh.window_bandn               ENDC               move.w   d5,(a1)+               dbra     d6,\1               bra      window_band9               IFD      WINDOW_CLIP               bra      window_band9.window_bandl  move.w   #-32768,d5               bra.s    .window_bandn.window_bandh  move.w   #32767,d5               bra.s    .window_bandn               ENDC               ENDM               ELSE ; ##3               ; CHECKBOUNDS <loop label>CHECKBOUNDS    MACRO               add.l    a6,a4               add.l    d2,a2               asr.l    d7,d5               IFD      WINDOW_CLIP               move.w   d5,a0               cmp.l    a0,d5               bne.b    .window_bandov.window_bandn               ENDC               move.w   d5,(a1)+               dbra     d6,\1               bra      window_band9               IFD      WINDOW_CLIP               bra      window_band9.window_bandov not.l    d5               add.l    d5,d5               move.w   #$8000,d5               negx.w   d5               bra.s    .window_bandn;               move.w   d5,(a1)+;               dbra     d6,\1;               bra      window_band9               ENDC               ENDM               ENDC  ; ##3 End;               move.w   w_width,d3 ; #2               move.w   (sp),d3 ; #2               lea      window_q0muls,a0               cmp.w    #4,d3               ble      window_qmul               lea      window_q1muls,a0               cmp.w    #8,d3               ble      window_qmul               lea      window_q2muls,a0window_qmul               move.l   (a0,d4.w*4),a0               jmp      (a0)window_q2mul0               MULADD0  16               MULADD1  0               CHECKBOUNDS window_q2mul0window_q2mul1               MULADD0  15               MULADD1  1               CHECKBOUNDS window_q2mul1window_q2mul2               MULADD0  14               MULADD1  2               CHECKBOUNDS window_q2mul2window_q2mul3               MULADD0  13               MULADD1  3               CHECKBOUNDS window_q2mul3window_q2mul4               MULADD0  12               MULADD1  4               CHECKBOUNDS window_q2mul4window_q2mul5               MULADD0  11               MULADD1  5               CHECKBOUNDS window_q2mul5window_q2mul6               MULADD0  10               MULADD1  6               CHECKBOUNDS window_q2mul6window_q2mul7               MULADD0  9               MULADD1  7               CHECKBOUNDS window_q2mul7window_q2mul8               MULADD0  8               MULADD1  8               CHECKBOUNDS window_q2mul8window_q2mul9               MULADD0  7               MULADD1  9               CHECKBOUNDS window_q2mul9window_q2mul10               MULADD0  6               MULADD1  10               CHECKBOUNDS window_q2mul10window_q2mul11               MULADD0  5               MULADD1  11               CHECKBOUNDS window_q2mul11window_q2mul12               MULADD0  4               MULADD1  12               CHECKBOUNDS window_q2mul12window_q2mul13               MULADD0  3               MULADD1  13               CHECKBOUNDS window_q2mul13window_q2mul14               MULADD0  2               MULADD1  14               CHECKBOUNDS window_q2mul14window_q2mul15               MULADD0  1               MULADD1  15               CHECKBOUNDS window_q2mul15window_q1mul0               MULADD0  8               MULADD1  0               CHECKBOUNDS window_q1mul0window_q1mul1               MULADD0  7               MULADD1  1               CHECKBOUNDS window_q1mul1window_q1mul2               MULADD0  6               MULADD1  2               CHECKBOUNDS window_q1mul2window_q1mul3               MULADD0  5               MULADD1  3               CHECKBOUNDS window_q1mul3window_q1mul4               MULADD0  4               MULADD1  4               CHECKBOUNDS window_q1mul4window_q1mul5               MULADD0  3               MULADD1  5               CHECKBOUNDS window_q1mul5window_q1mul6               MULADD0  2               MULADD1  6               CHECKBOUNDS window_q1mul6window_q1mul7               MULADD0  1               MULADD1  7               CHECKBOUNDS window_q1mul7window_q0mul0               MULADD0  4               MULADD1  0               CHECKBOUNDS window_q0mul0window_q0mul1               MULADD0  3               MULADD1  1               CHECKBOUNDS window_q0mul1window_q0mul2               MULADD0  2               MULADD1  2               CHECKBOUNDS window_q0mul2window_q0mul3               MULADD0  1               MULADD1  3               CHECKBOUNDS window_q0mul3window_band9               move.w   (sp)+,d2               movem.l  (sp)+,d2-d7/a2-a6               rtswindow_q2muls  dc.l     window_q2mul0, window_q2mul1, window_q2mul2, window_q2mul3               dc.l     window_q2mul4, window_q2mul5, window_q2mul6, window_q2mul7               dc.l     window_q2mul8, window_q2mul9, window_q2mul10, window_q2mul11               dc.l     window_q2mul12, window_q2mul13, window_q2mul14, window_q2mul15window_q1muls  dc.l     window_q1mul0, window_q1mul1, window_q1mul2, window_q1mul3               dc.l     window_q1mul4, window_q1mul5, window_q1mul6, window_q1mul7window_q0muls  dc.l     window_q0mul0, window_q0mul1, window_q0mul2, window_q0mul3               ENDC               ; ##1 End               ; #2 Begin: MPEGSUBB_config suppressed               IFNE     0;              Configure subband routines;;              d0 = freq_div;              d1 = quality;              d2 = output_8bits;;@MPEGSUBB_config;_MPEGSUBB_config               movem.l  d2-d7/a2-a6,-(sp)               move.w   d0,freq_div               move.w   d1,quality               move.w   d2,output_8bits               move.w   #32,d3         ; pcm_count for full freq output               cmp.w    #2,d0               beq      init_decode_1               cmp.w    #4,d0               beq      init_decode_2               bra      init_decode_5init_decode_1  move.w   #16,d3         ; pcm_count for half freq output               bra      init_decode_5init_decode_2  moveq.l  #8,d3          ; pcm_count for quarter freq outputinit_decode_5  move.w   d3,pcm_count               moveq.l  #0,d3          ; start offset for windowing               moveq.l  #16,d4         ; #coeff used for windowing               move.w   quality,d2               cmp.b    #2,d2          ; best quality               beq.s    init_decode_6               move.w   #4,d3               moveq.l  #8,d4               cmp.b    #1,d2               beq.s    init_decode_6               move.w   #6,d3               moveq.l  #4,d4init_decode_6  move.w   d3,w_begin               move.w   d4,w_width               movem.l  (sp)+,d2-d7/a2-a6               rts               ENDC               ; #2 End; ##4 Begin  (Table suppressed)               IFD OLD_DEW_TABLE               section  ASM_TABLES,dataWINDOW_FACTOR  equ      14               evenwindow_table               dc.w  +0,    -7,   +53,  -114,  +509, -1288, +1643, -9372,+18759, +9372, +1643, +1288,  +509,  +114,   +53,    +7               dc.w  +0,    -7,   +54,  -129,  +499, -1379, +1489, -9833,+18747, +8909, +1783, +1196,  +515,  +100,   +51,    +6               dc.w  +0,    -8,   +55,  -145,  +487, -1469, +1321,-10293,+18713, +8447, +1909, +1106,  +519,   +86,   +50,    +6               dc.w  +0,    -9,   +56,  -161,  +473, -1559, +1140,-10751,+18657, +7986, +2022, +1015,  +521,   +73,   +49,    +5               dc.w  +0,   -10,   +56,  -177,  +455, -1647,  +943,-11205,+18578, +7527, +2122,  +926,  +521,   +61,   +47,    +4               dc.w  +0,   -11,   +57,  -194,  +434, -1733,  +733,-11654,+18476, +7072, +2209,  +837,  +518,   +49,   +45,    +4               dc.w  +0,   -12,   +57,  -211,  +410, -1817,  +509,-12097,+18353, +6620, +2284,  +750,  +514,   +38,   +44,    +4               dc.w  +0,   -13,   +56,  -229,  +383, -1899,  +270,-12534,+18208, +6173, +2347,  +665,  +507,   +27,   +42,    +3               dc.w  +0,   -14,   +56,  -247,  +353, -1977,   +17,-12963,+18042, +5732, +2397,  +582,  +500,   +18,   +40,    +3               dc.w  +0,   -15,   +55,  -266,  +320, -2052,  -249,-13383,+17854, +5297, +2437,  +501,  +490,    +8,   +38,    +2               dc.w  +0,   -17,   +53,  -284,  +282, -2122,  -530,-13794,+17647, +4869, +2465,  +422,  +479,    +0,   +36,    +2               dc.w  +0,   -18,   +51,  -302,  +242, -2188,  -824,-14194,+17419, +4449, +2483,  +346,  +467,    -7,   +34,    +2               dc.w  +0,   -19,   +50,  -320,  +198, -2249, -1133,-14583,+17172, +4038, +2491,  +273,  +454,   -14,   +32,    +1               dc.w  +0,   -21,   +47,  -338,  +151, -2304, -1454,-14959,+16907, +3636, +2489,  +203,  +439,   -20,   +31,    +1               dc.w  +0,   -22,   +44,  -356,  +100, -2353, -1788,-15322,+16623, +3244, +2478,  +136,  +424,   -26,   +29,    +1               dc.w  -1,   -24,   +40,  -374,   +46, -2396, -2134,-15670,+16322, +2863, +2459,   +71,  +408,   -31,   +27,    +1               dc.w  -1,   -25,   +36,  -391,   -11, -2431, -2493,-16004,+16004, +2493, +2431,   +11,  +391,   -36,   +25,    +1               dc.w  -1,   -27,   +31,  -408,   -71, -2459, -2863,-16322,+15670, +2134, +2396,   -46,  +374,   -40,   +24,    +1               dc.w  -1,   -29,   +26,  -424,  -136, -2478, -3244,-16623,+15322, +1788, +2353,  -100,  +356,   -44,   +22,    +0               dc.w  -1,   -31,   +20,  -439,  -203, -2489, -3636,-16907,+14959, +1454, +2304,  -151,  +339,   -47,   +21,    +0               dc.w  -1,   -32,   +14,  -454,  -273, -2491, -4038,-17172,+14583, +1133, +2249,  -198,  +320,   -50,   +19,    +0               dc.w  -2,   -34,    +7,  -467,  -346, -2483, -4449,-17419,+14194,  +825, +2188,  -242,  +302,   -51,   +18,    +0               dc.w  -2,   -36,    +0,  -479,  -422, -2465, -4869,-17647,+13794,  +530, +2122,  -282,  +284,   -53,   +17,    +0               dc.w  -2,   -38,    -8,  -490,  -501, -2437, -5297,-17854,+13383,  +249, +2052,  -319,  +266,   -55,   +15,    +0               dc.w  -3,   -40,   -18,  -500,  -582, -2397, -5732,-18042,+12963,   -17, +1977,  -353,  +247,   -55,   +14,    +0               dc.w  -3,   -42,   -27,  -507,  -665, -2347, -6173,-18208,+12534,  -270, +1899,  -383,  +229,   -56,   +13,    +0               dc.w  -4,   -44,   -38,  -514,  -750, -2284, -6620,-18353,+12097,  -509, +1817,  -410,  +211,   -57,   +12,    +0               dc.w  -4,   -45,   -49,  -518,  -837, -2209, -7072,-18476,+11654,  -733, +1733,  -434,  +194,   -57,   +11,    +0               dc.w  -4,   -47,   -61,  -521,  -926, -2122, -7527,-18578,+11205,  -943, +1647,  -455,  +177,   -56,   +10,    +0               dc.w  -5,   -49,   -73,  -521, -1015, -2022, -7986,-18657,+10751, -1140, +1559,  -473,  +161,   -56,    +9,    +0               dc.w  -6,   -50,   -86,  -519, -1106, -1909, -8447,-18713,+10293, -1321, +1469,  -487,  +145,   -55,    +8,    +0               dc.w  -6,   -51,  -100,  -515, -1196, -1783, -8909,-18747, +9833, -1489, +1379,  -499,  +129,   -54,    +7,    +0               ENDC; ##4 End               ; #2: vars suppressed;               section  ASMVARS,bss;freq_div       ds.w     1  ; 1,2 or 4;output_8bits   ds.w     1  ; 0 if 16 bits output;quality        ds.w     1  ; 0..2 (best);w_begin        ds.w     1  ; start offset for windowing;w_width        ds.w     1  ; #coeff used for windowing;pcm_count      ds.w     1  ; # of samples per subband

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -