📄 record3.s
字号:
;*****************************************************************************
; (c)2000 Copyright LuxSonor, Inc. All rights reserved
;; Revision 1.0;; ; Module: RECORDING
;; Initial version: XUE XIANG WAN 9/27/2000
;; Calling : none; Called by: TEST and MPG
;*****************************************************************************
; Return: r11:
; Param in: No :
; Temp reg:
; AGR reg: AGR0: pointer for search buffer
; AGR1:
; AGR2
; Local buffer:
;
; use MPEG PCM buffer all 2k bytes (used) now in 1400
;;****************************************************************************
;*****************************************************************************
#if ENABLE_REREAD
#define CLASSIC_METHOD 0
#define LINEAR_BUFFER 0
;*****************************************************************************
; Next for headfile
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
.nolist
#include "regdef.h"
#include "regdef2.h"
;+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
#include "stereo_user.h"
#include "user2.h"
#include "memory.h"
#include "memory2.h"
#include "app_mem.h"
.list
//----------------------------------------------------------------
//----------------------------------------------------------------
//#define F11025 // sample frequence for 11.025
.extern r0_temp
.extern r1_temp
.extern r2_temp
.extern r3_temp
.extern r4_temp
.extern r5_temp
.extern r6_temp
.extern r7_temp
.extern r8_temp
.extern r9_temp
.extern r10_temp
.extern BlockSize_temp
.extern BlockSkip_temp
.extern DMASize_temp
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
.extern record_on_off_flag
.extern play_on_off_flag
.extern record_fifo_start_address
.extern record_fifo_end_address
.extern record_fifo_current_address
.extern play_fifo_start_address
.extern play_fifo_end_address
.extern play_fifo_current_address
.extern recording_flag
.extern playing_flag
.extern output_data_buffer
.extern frame_count
//----------------------------------------------------------------------------
//----------------------------------------------------------------------------
.extern mic_data_buffer
.extern play_debug_pcm
.extern record_debug_pcm
//-----------------------------------------------------------------------
//-----------------------------------------------------------------------
.extern power2
.extern _dqintab
.extern _witab
.extern _fitab
.extern qtab_723_24
.extern se
.extern y0
.extern sl
.extern spl
.extern szl
.extern rlt
.extern al
.extern plt
.extern dlt
.extern bl
.extern sg
.extern out_buffer
.extern in_buffer
.extern out_bits
.extern in_bits
//--------------------------------------------------------------------
//--------------------------------------------------------------------
.extern mic_frame
.extern pcm_fifo_frame
.extern reset_fifo_flag1
.extern reset_fifo_flag2
.extern pcm_in_debug
.extern frame_data_buffer
.extern microphone_status
.extern system_time
.extern system_time_buffer
//--------------------------------------------------------------------
//--------------------------------------------------------------------
.global in_reread_status
.global in_normal_status
//--------------------------------------------------------------------
//--------------------------------------------------------------------
//---------------------------------------------------------------------
//---------------------------------------------------------------------
#ifdef F11025
// begin seg
#define i_buffer 0x1340+0x40
#define recon_var1 0x1344+0x40 // for reconstruc
#define recon_var2 0x1348+0x40 // sub programm param
#define recon_var3 0x134c+0x40 // add 40 for 11.025k
#define dq_buffer 0x1350+0x40
#define r4_buffer_local 0x1354+0x40
#define r1_buffer_local 0x1358+0x40
//--------------------------------------------------------------------------
#define wdl 0x135c+0x40
#define wd2 0x1360+0x40
#define wd3 0x1364+0x40
#define wd4 0x1368+0x40
#define wd5 0x136c+0x40
#define p_sgp 0x1370+0x40
#define p_pltp 0x1374+0x40
#define p_alp 0x1378+0x40
#define p_dltp 0x137c+0x40
#define p_blp 0x1380+0x40
#define p_rltp 0x1384+0x40
#define p_pltp_1 0x1388+0x40
#define p_dltp_1 0x138c+0x40
#define p_rltp_1 0x1390+0x40
#define compressed_data_address 0x1700-0x40-0x40
#else
#define i_buffer 0x1340
#define recon_var1 0x1344 // for reconstruc
#define recon_var2 0x1348 // sub programm param
#define recon_var3 0x134c // add 40 for 11.025k
#define dq_buffer 0x1350
#define r4_buffer_local 0x1354
#define r1_buffer_local 0x1358
//--------------------------------------------------------------------------
#define wdl 0x135c
#define wd2 0x1360
#define wd3 0x1364
#define wd4 0x1368
#define wd5 0x136c
#define p_sgp 0x1370
#define p_pltp 0x1374
#define p_alp 0x1378
#define p_dltp 0x137c
#define p_blp 0x1380
#define p_rltp 0x1384
#define p_pltp_1 0x1388
#define p_dltp_1 0x138c
#define p_rltp_1 0x1390
#define compressed_data_address 0x1700-0x40
#endif
//---------------------------------------------------------------------------
#define input_data_address 0x1300 // mic data buffer
#define output_data_address 0x1300
//-----------------------------------------------------------------------------------
//**************************************************************************
//-----------------------------------------------------------------------------------
#if LINEAR_BUFFER
#if SVCD
// size 0x1371FE = 1,274,366
// 0x180000-0x1c0000 test OK
// 0x1c0000-0x200000 test OK
//#define buffer_first_page_head 0x160000 //0x28ae00
//#define buffer_first_page_head 0x180000 //0x28ae00 // old
//#define buffer_third_page_tail (0x200000-0x8000) // old
#define buffer_first_page_head 0x178000 //0x28ae00 // old
#define buffer_third_page_tail 0x1fc000 // old
#else //SVCD
// size 0x1371FE = 1,274,366
#define buffer_first_page_head 0x240000 //0x28ae00
#define buffer_third_page_tail 0x250000
//#define buffer_first_page_head 0x290000 //0x28ae00
//#define buffer_third_page_tail 0x3c1ffe
#endif
#else //LINEAR_BUFFER
#if 0 // for DVD 3 pages buffer ------------------------------------------------
#define buffer_first_page_head 0x23f4c6 // 201528 bytes
#define buffer_first_page_tail 0x2707fe // use the video frame buffer
#define buffer_second_page_head 0x2e80c6 // 201528 bytes
#define buffer_second_page_tail 0x3193fe // use the video frame buffer
#define buffer_third_page_head 0x390cc6 // 201528 bytes
#define buffer_third_page_tail 0x3c1ffe // use the video frame buffer
#endif
//#define buffer_first_page_head 0x000fb600
//#define buffer_first_page_tail 0x0011d200
//#define buffer_second_page_head 0x00160a00
//#define buffer_second_page_tail 0x00182600
//#define buffer_third_page_head 0x001c5e00
//#define buffer_third_page_tail 0x001e7a00
#if SVCD
#define FRAME_BASE_OFFSET 0x2c180
#define buffer_first_page_head (0x101d80-FRAME_BASE_OFFSET)
#define buffer_first_page_tail (0x123980-FRAME_BASE_OFFSET)
#define buffer_second_page_head (0x167180-FRAME_BASE_OFFSET)
#define buffer_second_page_tail (0x188d80-FRAME_BASE_OFFSET)
#define buffer_third_page_head (0x1c3f80-FRAME_BASE_OFFSET)
#define buffer_third_page_tail (0x1d4d80-FRAME_BASE_OFFSET)
#else
/**************************************************
ati_dvd/video.bas --white 04-26-2001 11:29:21
PAGE-SIZE:32A00 FRAME-COUNT:4380
TOTAL-SIZE:0x97E00= 622080
TOTAL-FRAME-COUNT:0xCA80= 51840 3240
record time per frame: 5.804989 ms
total record time: 300.9306
**************************************************/
#define buffer_first_page_head 0x238400
#define buffer_first_page_tail 0x26AE00
#define buffer_second_page_head 0x2E1000
#define buffer_second_page_tail 0x313A00
#define buffer_third_page_head 0x389C00
#define buffer_third_page_tail 0x3BC600
#endif //SVCD
#endif // LINEAR_BUFFER
//-----------------------------------------------------------------------------------
//**************************************************************************
//-----------------------------------------------------------------------------------
.global SUB_record
.text
.align 4
//-----------------------------------------------------------------------------------
//--------------------------- Next for record programm --------------------------------
//-----------------------------------------------------------------------------------
SUB_record:
//-----------------------------------------------------------------------------------
//-----------------------------------------------------------------------------------
mov r24,DcacheBase
//-------------------------------------------------------------------------
movi DcacheBase, APP_DATA_SEG
dsw r0,r0_temp
dsw r1,r1_temp
dsw r2,r2_temp
dsw r3,r3_temp
dsw r4,r4_temp
dsw r5,r5_temp
dsw r6,r6_temp
dsw r7,r7_temp
dsw r8,r8_temp
dsw r9,r9_temp
dsw r10,r10_temp
mov r0,BlockSize
dsw r0,BlockSize_temp
mov r0,BlockSkip
dsw r0,BlockSkip_temp
mov r0,DMASize
dsw r0,DMASize_temp ; protect all programm register
SUB_record_next:
//-----------------------------------------------------------------------------
//-----------------------------------------------------------------------------
jsr r9,real_record // to prohibit programm re_in in re_read status
//-----------------------------------------------------------------------------
SUB_record_end:
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -