📄 voipadpcm.asm
字号:
Table4:
Table4HB:
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
db 0, 0, 0, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3
db 3, 4, 4, 4, 5, 6, 6, 7, 8, 8, 9, 10, 11, 12, 14, 15
db 17, 18, 20, 22, 25, 27, 30, 33, 36, 40, 44, 49, 54, 59, 65, 71
Table4LB:
db 4, 5, 6, 7, 9, 10, 11, 13, 15, 18, 20, 22, 25, 29, 32, 36
db 40, 45, 49, 55, 60, 67, 74, 82, 91,101,112,123,137,151,167,184
db 203,225,247, 16, 44, 74,108,145,186,231, 24, 78,138,203, 19, 99
db 187, 26,132,248,120, 5,160, 74, 5,211,181,173,192,237, 57,166
db 55,240,214,237, 56,190,133,147,239,161,178, 43, 22,127,114,254
Table5:
Table5HB:
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
db 0, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4
db 4, 5, 5, 6, 6, 7, 8, 8, 9, 10, 11, 13, 14, 15, 17, 19
db 21, 23, 25, 28, 30, 33, 37, 41, 45, 49, 54, 60, 66, 72, 79, 87
Table5LB:
db 5, 6, 7, 8, 11, 12, 13, 16, 18, 22, 24, 27, 30, 35, 39, 44
db 49, 55, 60, 67, 73, 82, 90,100,111,123,137,150,167,184,204,225
db 248, 19, 46, 76,110,147,189,234, 28, 83,143,209, 26,106,194, 35
db 143, 3,133, 18,175, 91, 25,232,205,201,221, 12, 92,204, 98, 32
db 10, 37,119, 5,210,232, 77, 9, 36,168,160, 24, 27,183,253,253
Table6:
Table6HB:
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1
db 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 4, 4
db 5, 5, 6, 7, 7, 8, 9, 10, 11, 12, 14, 15, 16, 18, 20, 22
db 24, 27, 30, 33, 36, 40, 44, 48, 53, 58, 64, 71, 78, 85, 94,103
Table6LB:
db 6, 7, 9, 10, 13, 14, 16, 19, 22, 26, 29, 32, 36, 42, 46, 52
db 58, 65, 71, 79, 87, 97,107,118,131,146,162,178,198,218,241, 10
db 37, 69,101,137,177,221, 14, 67,126,191, 6, 84,171, 9,113,228
db 99,237,134, 45,230,178,146,135,149,191, 5,108,249,172,139,154
db 222, 91, 25, 29,109, 18, 21,127, 89,176,143, 5, 32,240,136,253
Table7:
Table7HB:
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
db 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1
db 1, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 4, 5, 5
db 6, 6, 7, 8, 9, 10, 11, 12, 13, 14, 16, 17, 19, 21, 23, 26
db 28, 31, 34, 38, 42, 46, 50, 55, 61, 67, 74, 81, 90, 99,109,119
Table7LB:
db 7, 8, 10, 11, 15, 16, 18, 22, 25, 30, 33, 37, 41, 48, 53, 60
db 67, 75, 82, 91,100,112,123,136,151,168,187,205,228,251, 22, 51
db 82,119,156,197,243, 38, 95,156,224, 43,125,215, 59,168, 32,164
db 55,214,135, 71, 29, 8, 11, 37, 93,181, 45,203,149,139,180, 20
db 177,144,186, 53, 7, 60,221,245,142,183,125,242, 37, 40, 19,252
.endliteral
.SECTION
;;------------------------------------------------------------------
;; adpcmDecode: 131 CPU cycles (including lcall)
;; A is the fCode used with iPredict and iStepSizePtr to do
;; the following:
;;
;; Calculates a next iPredict
;; Calculate a new pStepSizePtr
;;
;; The Predict value is returned in X,A
;;-----------------------------------------------------------------
adpcmDecode::
; RAM_PROLOGUE RAM_USE_CLASS_4
; RAM_SETPAGE_CUR (>_Space)
asl A
jacc JumpTable
JumpTable:
jmp ValueP0
jmp ValueP1
jmp ValueP2
jmp ValueP3
jmp ValueP4
jmp ValueP5
jmp ValueP6
jmp ValueP7
jmp ValueN0
jmp ValueN1
jmp ValueN2
jmp ValueN3
jmp ValueN4
jmp ValueN5
jmp ValueN6
jmp ValueN7
ValueP7:
UpdateDecodePos Table7
IncrementSP _bDecStepSizePtr,8
mov X,[_iDecPredict + MSB]
mov A,[_iDecPredict + LSB]
; RAM_EPILOGUE RAM_USE_CLASS_4
ret
ValueP6:
UpdateDecodePos Table6
IncrementSP _bDecStepSizePtr,6
mov X,[_iDecPredict + MSB]
mov A,[_iDecPredict + LSB]
; RAM_EPILOGUE RAM_USE_CLASS_4
ret
ValueP5:
UpdateDecodePos Table5
IncrementSP _bDecStepSizePtr,4
mov X,[_iDecPredict + MSB]
mov A,[_iDecPredict + LSB]
; RAM_EPILOGUE RAM_USE_CLASS_4
ret
ValueP4:
UpdateDecodePos Table4
IncrementSP _bDecStepSizePtr,2
mov X,[_iDecPredict + MSB]
mov A,[_iDecPredict + LSB]
; RAM_EPILOGUE RAM_USE_CLASS_4
ret
ValueP3:
UpdateDecodePos Table3
DecrementSP _bDecStepSizePtr
mov X,[_iDecPredict + MSB]
mov A,[_iDecPredict + LSB]
; RAM_EPILOGUE RAM_USE_CLASS_4
ret
ValueP2:
UpdateDecodePos Table2
DecrementSP _bDecStepSizePtr
mov X,[_iDecPredict + MSB]
mov A,[_iDecPredict + LSB]
; RAM_EPILOGUE RAM_USE_CLASS_4
ret
ValueP1:
UpdateDecodePos Table1
DecrementSP _bDecStepSizePtr
mov X,[_iDecPredict + MSB]
mov A,[_iDecPredict + LSB]
; RAM_EPILOGUE RAM_USE_CLASS_4
ret
ValueP0:
UpdateDecodePos Table0
DecrementSP _bDecStepSizePtr
mov X,[_iDecPredict + MSB]
mov A,[_iDecPredict + LSB]
; RAM_EPILOGUE RAM_USE_CLASS_4
ret
ValueN7:
UpdateDecodeNeg Table7
IncrementSP _bDecStepSizePtr,8
mov X,[_iDecPredict + MSB]
mov A,[_iDecPredict + LSB]
; RAM_EPILOGUE RAM_USE_CLASS_4
ret
ValueN6:
UpdateDecodeNeg Table6
IncrementSP _bDecStepSizePtr,6
mov X,[_iDecPredict + MSB]
mov A,[_iDecPredict + LSB]
; RAM_EPILOGUE RAM_USE_CLASS_4
ret
ValueN5:
UpdateDecodeNeg Table5
IncrementSP _bDecStepSizePtr,4
mov X,[_iDecPredict + MSB]
mov A,[_iDecPredict + LSB]
; RAM_EPILOGUE RAM_USE_CLASS_4
ret
ValueN4:
UpdateDecodeNeg Table4
IncrementSP _bDecStepSizePtr,2
mov X,[_iDecPredict + MSB]
mov A,[_iDecPredict + LSB]
; RAM_EPILOGUE RAM_USE_CLASS_4
ret
ValueN3:
UpdateDecodeNeg Table3
DecrementSP _bDecStepSizePtr
mov X,[_iDecPredict + MSB]
mov A,[_iDecPredict + LSB]
; RAM_EPILOGUE RAM_USE_CLASS_4
ret
ValueN2:
UpdateDecodeNeg Table2
DecrementSP _bDecStepSizePtr
mov X,[_iDecPredict + MSB]
mov A,[_iDecPredict + LSB]
; RAM_EPILOGUE RAM_USE_CLASS_4
ret
ValueN1:
UpdateDecodeNeg Table1
DecrementSP _bDecStepSizePtr
mov X,[_iDecPredict + MSB]
mov A,[_iDecPredict + LSB]
; RAM_EPILOGUE RAM_USE_CLASS_4
ret
ValueN0:
UpdateDecodeNeg Table0
DecrementSP _bDecStepSizePtr
mov X,[_iDecPredict + MSB]
mov A,[_iDecPredict + LSB]
; RAM_EPILOGUE RAM_USE_CLASS_4
ret
.ENDSECTION
.SECTION
;----------------------------------
_iEncodeGetPredict:
; RAM_PROLOGUE RAM_USE_CLASS_4
; RAM_SETPAGE_CUR (>_Space)
mov X,[_iEncPredict + MSB]
mov A,[_iEncPredict + LSB]
; RAM_EPILOGUE RAM_USE_CLASS_4
ret
.ENDSECTION
.SECTION
;----------------------------------
_EncodeLoadPredict:
; RAM_PROLOGUE RAM_USE_CLASS_4
; RAM_SETPAGE_CUR (>_Space)
mov [_iEncPredict + LSB],A
mov [_iEncPredict + MSB],X
; RAM_EPILOGUE RAM_USE_CLASS_4
ret
.ENDSECTION
.SECTION
;----------------------------------
_bEncodeGetStepPtr:
; RAM_PROLOGUE RAM_USE_CLASS_4
; RAM_SETPAGE_CUR (>_Space)
mov A,[_bEncStepSizePtr]
; RAM_EPILOGUE RAM_USE_CLASS_4
ret
.ENDSECTION
.SECTION
;----------------------------------
_EncodeLoadStepPtr:
; RAM_PROLOGUE RAM_USE_CLASS_4
; RAM_SETPAGE_CUR (>_Space)
mov [_bEncStepSizePtr],A
; RAM_EPILOGUE RAM_USE_CLASS_4
ret
.ENDSECTION
.SECTION
;----------------------------------
_iDecodeGetPredict:
; RAM_PROLOGUE RAM_USE_CLASS_4
; RAM_SETPAGE_CUR (>_Space)
mov X,[_iDecPredict + MSB]
mov A,[_iDecPredict + LSB]
; RAM_EPILOGUE RAM_USE_CLASS_4
ret
.ENDSECTION
.SECTION
;----------------------------------
_DecodeLoadPredict:
; RAM_PROLOGUE RAM_USE_CLASS_4
; RAM_SETPAGE_CUR (>_Space)
mov [_iDecPredict + LSB],A
mov [_iDecPredict + MSB],X
; RAM_EPILOGUE RAM_USE_CLASS_4
ret
.ENDSECTION
.SECTION
;----------------------------------
_bDecodeGetStepPtr:
; RAM_PROLOGUE RAM_USE_CLASS_4
; RAM_SETPAGE_CUR (>_Space)
mov A,[_bDecStepSizePtr]
; RAM_EPILOGUE RAM_USE_CLASS_4
ret
.ENDSECTION
.SECTION
;----------------------------------
_DecodeLoadStepPtr:
; RAM_PROLOGUE RAM_USE_CLASS_4
; RAM_SETPAGE_CUR (>_Space)
mov [_bDecStepSizePtr],A
; RAM_EPILOGUE RAM_USE_CLASS_4
ret
.ENDSECTION
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -