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

📄 ui_play.s01

📁 炬力方案176*132软件源码,适用于AK1025
💻 S01
📖 第 1 页 / 共 2 页
字号:
	NAME	ui_play(17)
	RSEG	CODE_1(0)
	RSEG	UDATA0(0)
	EXTERN	BankSwitch
	PUBLIC	Delaytime
	EXTERN	FS_Exit
	EXTERN	FS_FClose
	EXTERN	FS_FOpen
	EXTERN	FS_GetFileLen
	EXTERN	FS_GetUnalignedLen
	EXTERN	GetDCStatus
	EXTERN	LoadData
	EXTERN	SetBackgdColor
	EXTERN	SetPenColor
	PUBLIC	Stop_display
	EXTERN	ToPrevScreenPosition
	EXTERN	active
	EXTERN	ap_get_message
	EXTERN	ap_handle_hotkey
	EXTERN	ap_message_init
	EXTERN	bookmark_op
	PUBLIC	count_autoplay
	PUBLIC	do_play
	EXTERN	fselGetByNO
	EXTERN	g_comval
	EXTERN	g_reader_vars
	EXTERN	need_sel_file
	EXTERN	ui_err_msg
	PUBLIC	view_file
	EXTERN	view_page_down
	EXTERN	view_page_up
	EXTERN	?CLZ80B_4_04_L00
	EXTERN	?L_LSH_L03
	EXTERN	?SL_CMP_L03
	EXTERN	?C_V_SWITCH_L06
	EXTERN	?BANK_CALL_DIRECT_L08
	EXTERN	?BANK_FAST_LEAVE_L08
	RSEG	CODE_1
do_play:
; 1.	/*
; 2.	*******************************************************************************
; 3.	*                ACTOS AP
; 4.	*        reader  program.
; 5.	*
; 6.	*        (c) Copyright, Actions Co,Ld.                             
; 7.	*             All Right Reserved                          
; 8.	*
; 9.	*  
; 10.	*******************************************************************************
; 11.	*/ 
; 12.	#include  "actos.h"
; 13.	#include  "enhanced.h"
; 14.	#include  "ap_common.h"
; 15.	#include  "display.h"
; 16.	#include  "ap_reader.h"
; 17.	#include  "TxtDec.h"    
; 18.	#include  "bookmark.h" 
; 19.	#include  "mmcmd.h"//模块层命令名定义
; 20.	
; 21.	
; 22.	char        Stop_display;
; 23.	char        count_autoplay; 
; 24.	char        Delaytime;     
; 25.	
; 26.	extern  bool need_sel_file;                           
; 27.	#pragma        codeseg(CODE_1)
; 28.	
; 29.	
; 30.	int  view_file( void );
; 31.	/*
; 32.	********************************************************************************
; 33.	*
; 34.	********************************************************************************
; 35.	*/
; 36.	int do_play(void)
; 37.	{
	PUSH	BC
	PUSH	DE
	PUSH	IX
	LD	HL,65526
	ADD	HL,SP
	LD	SP,HL
; 38.	 
; 39.	    char    key;
; 40.	    int        result;
; 41.	    DC        hDc;
; 42.	
; 43.	  //保存当前设备状态
; 44.	    GetDCStatus(&hDc);
	EX	DE,HL
	CALL	LWRD GetDCStatus
; 45.	
; 46.	    SetBackgdColor(Color_MENU_def);
	LD	BC,0
	LD	DE,65535
	CALL	LWRD SetBackgdColor
; 47.	    SetPenColor(Color_BLACK_def);
	LD	BC,0
	LD	E,C
	LD	D,B
	CALL	LWRD SetPenColor
; 48.	    // 初始化打开文件
; 49.	    fselGetByNO(g_reader_vars.location.filename, active + 1);
	LD	BC,(active)
	INC	BC
	LD	DE,g_reader_vars+32
	LD	A,BYTE3 fselGetByNO
	LD	HL,LWRD fselGetByNO
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 50.	    g_reader_vars.g_txt.FileHandle =FS_FOpen(g_reader_vars.location.filename,FS_OPEN_NORMAL);
	LD	C,0
	LD	DE,g_reader_vars+32
	CALL	LWRD FS_FOpen
	LD	(g_reader_vars+49),HL
; 51.	    if( g_reader_vars.g_txt.FileHandle == NULL )
	LD	A,L
	OR	H
	JR	NZ,?0003
?0002:
; 52.	    {   // 错误处理
; 53.	        ui_err_msg(MFMTERR,MFMTERR,g_comval.langid);
	LD	BC,(g_comval+12)
	LD	B,A
	PUSH	BC
	LD	BC,538
	LD	E,C
	LD	D,B
	LD	A,BYTE3 ui_err_msg
	LD	HL,LWRD ui_err_msg
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
; 54.	        key = 0;
; 55.	        return 0;
	LD	HL,0
; 56.	    }
	JR	?0004
?0003:
; 57.	
; 58.	    g_reader_vars.g_txt.SectorTotal = FS_GetFileLen( g_reader_vars.g_txt.FileHandle ) ;
	EX	DE,HL
	CALL	LWRD FS_GetFileLen
	LD	(g_reader_vars+65),HL
; 59.	    g_reader_vars.g_txt.FileLengthBytes    = ((long)( g_reader_vars.g_txt.SectorTotal-1) * FILE_SECTOR ) + FS_GetUnalignedLen( g_reader_vars.g_txt.FileHandle );
	LD	BC,65535
	ADD	HL,BC
	INC	BC
	LD	A,9
	CALL	LWRD ?L_LSH_L03
	PUSH	BC
	PUSH	HL
	LD	DE,(g_reader_vars+49)
	CALL	LWRD FS_GetUnalignedLen
	LD	A,H
	RLCA
	SBC	A,A
	LD	E,A
	LD	D,E
	POP	BC
	ADD	HL,BC
	EX	DE,HL
	POP	BC
	ADC	HL,BC
	LD	C,L
	LD	B,H
	EX	DE,HL
	LD	(g_reader_vars+51),HL
	LD	(g_reader_vars+53),BC
; 60.	
; 61.	    result = view_file();
	LD	A,BYTE3 view_file
	LD	HL,LWRD view_file
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	PUSH	HL
	POP	IX
; 62.	
; 63.	
; 64.	    FS_FClose( g_reader_vars.g_txt.FileHandle );
	LD	DE,(g_reader_vars+49)
	CALL	LWRD FS_FClose
; 65.	    FS_Exit();
	CALL	LWRD FS_Exit
; 66.	
; 67.	
; 68.	    //恢复保存设备状态
; 69.	    SetPenColor(hDc.PenColor);
	LD	HL,0
	ADD	HL,SP
	LD	E,(HL)
	INC	HL
	LD	D,(HL)
	INC	HL
	LD	C,(HL)
	INC	HL
	LD	B,(HL)
	CALL	LWRD SetPenColor
; 70.	    SetBackgdColor(hDc.BackgdColor);
	LD	HL,4
	ADD	HL,SP
	LD	E,(HL)
	INC	HL
	LD	D,(HL)
	INC	HL
	LD	C,(HL)
	INC	HL
	LD	B,(HL)
	CALL	LWRD SetBackgdColor
; 71.	
; 72.	    return result;
	PUSH	IX
	POP	HL
; 73.	}
?0004:
	EX	DE,HL
	LD	HL,10
	ADD	HL,SP
	LD	SP,HL
	EX	DE,HL
	POP	IX
	POP	DE
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
view_file:
; 74.	
; 75.	
; 76.	//////////////////////////////////////////////////
; 77.	//阅读文件
; 78.	int  view_file( void )
; 79.	{
	PUSH	BC
	PUSH	DE
	PUSH	IY
	PUSH	IX
	LD	IX,0
	ADD	IX,SP
	LD	HL,65510
	ADD	HL,SP
	LD	SP,HL
; 80.	    uint AutoPlayTime, AutoPlayTimeSet = 5;
; 81.	    BOOL FlagAutoPlay = FALSE;
; 82.	    BOOL bRedraw = TRUE;
; 83.	    byte nDrawRow;
; 84.	    int     result;    
; 85.	    char key;
; 86.	    bool bPageDownFlag = 0;        //下翻页标记
; 87.	   
; 88.	    long FileLengthLeft= g_reader_vars.g_txt.FileLengthBytes - g_reader_vars.g_txt.CurrentSeek;
	AND	A
	LD	HL,(g_reader_vars+51)
	LD	BC,(g_reader_vars+59)
	SBC	HL,BC
	EX	DE,HL
	LD	HL,(g_reader_vars+53)
	LD	BC,(g_reader_vars+61)
	SBC	HL,BC
	LD	C,L
	LD	B,H
	EX	DE,HL
; 89.	   // if(g_reader_vars.g_txt.BufSector!=(g_reader_vars.g_txt.SectorTotal-1))
; 90.	    if(FileLengthLeft>0) 
	LD	(IX-24),5
	LD	(IX-23),0
	LD	(IX-21),1
	LD	(IX-16),0
	PUSH	BC
	PUSH	HL
	LD	BC,0
	LD	L,C
	LD	H,B
	CALL	LWRD ?SL_CMP_L03
	JR	NC,?0006
?0005:
; 91.	        bPageDownFlag = TRUE;
	LD	(IX-16),1
?0006:
; 92.	    if(g_reader_vars.playflag) 
	LD	A,(g_reader_vars+2)
	OR	A
	JR	Z,?0008
?0007:
; 93.	    {
; 94.	        FlagAutoPlay = TRUE;
; 95.	        AutoPlayTimeSet = g_reader_vars.autoplaytime;
	LD	BC,(g_reader_vars+3)
	LD	B,H
	LD	(IX-24),C
	LD	(IX-23),B
; 96.	        AutoPlayTime=AutoPlayTimeSet*2;
	LD	L,C
	LD	H,B
	ADD	HL,HL
	LD	(IX-26),L
	LD	(IX-25),H
?0008:
?0010:
; 97.	    }
; 98.	
; 99.	    while( 1 )
; 100.	    {
; 101.	        DC  oldDC_sav;
; 102.	        if( bRedraw )
	XOR	A
	OR	(IX-21)
	JR	Z,?0013
?0012:
; 103.	        {
; 104.	            nDrawRow = view_page_down(&g_reader_vars.g_txt, FALSE,NULL ); // 显示一屏
	LD	HL,0
	PUSH	HL
	LD	C,H
	LD	DE,g_reader_vars+49
	LD	A,BYTE3 view_page_down
	LD	HL,LWRD view_page_down
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
	LD	(IX-20),L
; 105.	            bRedraw = FALSE;
	LD	(IX-21),0
?0013:
; 106.	        }
; 107.	        GetDCStatus(&oldDC_sav);
	LD	HL,15
	ADD	HL,SP
	EX	DE,HL
	CALL	LWRD GetDCStatus
; 108.	        key = ap_get_message();
	CALL	LWRD ap_get_message
; 109.	
; 110.	        switch( key )
	LD	E,A
	CALL	LWRD ?C_V_SWITCH_L06
	DEFW	9
	DEFB	5
	DEFB	6
	DEFB	28
	DEFB	33
	DEFB	48
	DEFB	55
	DEFB	69
	DEFB	70
	DEFB	128
	DEFW	?0068
	DEFW	?0019
	DEFW	?0026
	DEFW	?0046
	DEFW	?0052
	DEFW	?0058
	DEFW	?0015
	DEFW	?0019
	DEFW	?0026
	DEFW	?0046
?0015:
; 111.	        {
; 112.	            case AP_KEY_PLAY | AP_KEY_UP:
; 113.	                 { 
; 114.	                    FileLengthLeft= g_reader_vars.g_txt.FileLengthBytes - g_reader_vars.g_txt.CurrentSeek;
	AND	A
	LD	HL,(g_reader_vars+51)
	LD	BC,(g_reader_vars+59)
	SBC	HL,BC
	EX	DE,HL
	LD	HL,(g_reader_vars+53)
	LD	BC,(g_reader_vars+61)
	SBC	HL,BC
	LD	C,L
	LD	B,H
	EX	DE,HL
; 115.	                    if(FileLengthLeft<=0)
	PUSH	BC
	PUSH	HL
	LD	BC,0
	LD	L,C
	LD	H,B
	CALL	LWRD ?SL_CMP_L03
	JR	C,?0017
?0016:
; 116.	                    { 
; 117.	                       g_reader_vars.g_txt.PrevSeek=0;
	LD	(g_reader_vars+55),HL
	LD	(g_reader_vars+57),BC
; 118.	                        g_reader_vars.g_txt.CurrentSeek=0;
	LD	(g_reader_vars+59),HL
	LD	(g_reader_vars+61),BC
; 119.	                        g_reader_vars.g_txt.BufSector=0;
	LD	(g_reader_vars+63),HL
; 120.	                    }
; 121.	                    else
	JP	LWRD ?0082
?0017:
; 122.	                    { 
; 123.	                     ToPrevScreenPosition(&g_reader_vars.g_txt);       //回上一屏              
	CALL	LWRD ?0084
?0018:
; 124.	                    }
; 125.	                    return 0;
	JP	LWRD ?0082
; 126.	                }

⌨️ 快捷键说明

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