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

📄 ui_stop.s01

📁 炬力方案176*132软件源码,适用于AK1025
💻 S01
📖 第 1 页 / 共 2 页
字号:
	NAME	ui_stop(17)
	RSEG	CODE_1(0)
	RSEG	CSTR(0)
	RSEG	CONST(0)
	RSEG	UDATA0(0)
	EXTERN	FS_Backup
	EXTERN	FS_CD
	EXTERN	FS_GetName
	EXTERN	FS_Restore
	EXTERN	MenuInReader
	EXTERN	PutS
	EXTERN	ResShowMultiString
	EXTERN	ResShowPic
	EXTERN	SetBackgdColor
	EXTERN	SetPenColor
	EXTERN	SetTextPos
	EXTERN	UpdateFileSelector
	PUBLIC	active
	EXTERN	ap_get_message
	EXTERN	ap_handle_hotkey
	EXTERN	ap_message_init
	EXTERN	dir_name
	EXTERN	do_play
	PUBLIC	fileName
	EXTERN	fselGetErrID
	EXTERN	fselGetLocation
	EXTERN	fselGetNext
	EXTERN	fselGetNo
	EXTERN	fselGetPrev
	EXTERN	fselGetTotal
	EXTERN	fselInit
	EXTERN	fselSetLocation
	EXTERN	fselSetMode
	EXTERN	g_comval
	PUBLIC	g_file_total
	EXTERN	g_from_browser
	EXTERN	g_menu_active
	EXTERN	g_reader_vars
	PUBLIC	make_dirname
	PUBLIC	menu_pos
	PUBLIC	need_sel_file
	EXTERN	read_idm_data_reader
	EXTERN	reinit_idm_buf_reader
	EXTERN	reset_cur_list_bg_color_reader
	PUBLIC	sel_next
	PUBLIC	sel_prev
	EXTERN	show_active_list_reader
	PUBLIC	show_stop
	EXTERN	ui_err_msg
	EXTERN	unitochar
	EXTERN	?CLZ80B_4_04_L00
	EXTERN	?SS_DIV_L02
	EXTERN	?S_V_SWITCH_L06
	EXTERN	?BANK_CALL_DIRECT_L08
	EXTERN	?BANK_FAST_LEAVE_L08
	EXTERN	?STRCPY_L11
	RSEG	CODE_1
make_dirname:
; 1.	/*
; 2.	*******************************************************************************
; 3.	*                ACTOS AP
; 4.	*        voice player stop program.
; 5.	*
; 6.	*        (c) Copyright, Actions Co,Ld.
; 7.	*             All Right Reserved
; 8.	*
; 9.	*  $Id: ui_stop.c,v 1.2 2006/07/14 06:52:52 tangwh Exp $
; 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.	extern bool g_menu_active; //为1进入MENU菜单,主要用来丢掉从目录选择时长按mode键返回
; 18.	int active;        //当前文件序号
; 19.	int g_file_total;    //总文件数
; 20.	bool need_sel_file; 
; 21.	char  fileName[50];            //用作存放一些局部变量的buffer,避免过多的局部变量造成堆栈溢出
; 22.	const char menu_pos[6] = {22,22+18,22+18*2,22+18*3,22+18*4,22+18*5};
; 23.	
; 24.	#pragma codeseg(CODE_1)
; 25.	/*
; 26.	********************************************************************************
; 27.	*
; 28.	********************************************************************************
; 29.	*/
; 30.	void make_dirname(void)
; 31.	{
	PUSH	BC
	PUSH	DE
	PUSH	IX
	LD	HL,65504
	ADD	HL,SP
	LD	SP,HL
; 32.	    int result;
; 33.	
; 34.	   char Backbuf[32];
; 35.	   fselGetLocation(&g_reader_vars.location);
	CALL	LWRD ?0116
; 36.	    if(g_reader_vars.location.path[0]==':')
	LD	A,(g_reader_vars+20)
	CP	58
	JR	NZ,?0003
?0002:
; 37.	        {
; 38.	            strcpy(dir_name,"ROOT");
	LD	DE,?0004
	LD	HL,dir_name
	CALL	LWRD ?STRCPY_L11
; 39.	        }
; 40.	    else
	JR	?0005
?0003:
; 41.	        {
; 42.	
; 43.	        FS_Backup(Backbuf,FS_BACKUP_DIRINFO,0);//目录项备份
	LD	HL,0
	PUSH	HL
	LD	C,2
	INC	HL
	INC	HL
	ADD	HL,SP
	EX	DE,HL
	CALL	LWRD FS_Backup
	POP	HL
; 44.	        FS_CD("\\");
	LD	DE,?0006
	CALL	LWRD FS_CD
; 45.	        memcpy(dir_name, g_reader_vars.location.path, 12);
	LD	BC,12
	LD	DE,dir_name
	LD	HL,g_reader_vars+20
	LDIR
; 46.	            result = FS_GetName(dir_name, 14); //取出长名
	LD	C,14
	LD	DE,dir_name
	CALL	LWRD FS_GetName
	LD	B,0
; 47.	            if (result != 0)
	OR	A
	JR	Z,?0008
?0007:
; 48.	            {
; 49.	                unitochar(dir_name, sizeof(dir_name), g_comval.langid);
	LD	HL,g_comval+12
	LD	C,(HL)
	PUSH	BC
	LD	C,30
	LD	DE,dir_name
	LD	A,BYTE3 unitochar
	LD	HL,LWRD unitochar
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
; 50.	            }
; 51.	            else
	JR	?0009
?0008:
; 52.	            {
; 53.	                memcpy(dir_name, g_reader_vars.location.path, 12);
	LD	C,12
	LD	DE,dir_name
	LD	HL,g_reader_vars+20
	LDIR
; 54.	                dir_name[8]=0;
	LD	(dir_name+8),A
; 55.	                dir_name[9]=0;
	LD	(dir_name+9),A
?0009:
; 56.	
; 57.	             }
; 58.	        FS_Restore(Backbuf,FS_RESTORE_DIRINFO,0);//目录项恢复
	LD	HL,0
	PUSH	HL
	LD	C,2
	INC	HL
	INC	HL
	ADD	HL,SP
	EX	DE,HL
	CALL	LWRD FS_Restore
	POP	HL
?0005:
; 59.	
; 60.	        }
; 61.	}
	LD	HL,32
	ADD	HL,SP
	LD	SP,HL
	POP	IX
	POP	DE
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
?0116:
	LD	DE,g_reader_vars+6
	LD	A,BYTE3 fselGetLocation
	LD	HL,LWRD fselGetLocation
	JP	LWRD ?BANK_CALL_DIRECT_L08
sel_next:
; 62.	
; 63.	
; 64.	
; 65.	BOOL sel_next(BOOL select_all)
; 66.	{
	PUSH	BC
	PUSH	DE
	PUSH	AF
; 67.	        BOOL mc_result;
; 68.	
; 69.	        mc_result = FSELSetMode(FSEL_DIR_REPEATALL);
	LD	E,3
	LD	A,BYTE3 fselSetMode
	LD	HL,LWRD fselSetMode
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 70.	
; 71.	        mc_result = fselGetNext(g_reader_vars.location.filename);
	LD	DE,g_reader_vars+32
	LD	A,BYTE3 fselGetNext
	LD	HL,LWRD fselGetNext
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	B,L
; 72.	        if(!mc_result)
	XOR	A
	OR	B
	JR	NZ,?0011
?0010:
; 73.	        {
; 74.	            if(fselGetErrID() == FSEL_ERR_OUTOF) {return FALSE;}
	LD	A,BYTE3 fselGetErrID
	LD	HL,LWRD fselGetErrID
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	DEC	L
	JR	NZ,?0014
?0012:
	JR	?0014
?0013:
; 75.	        }
; 76.	        else    //normal next file
?0011:
; 77.	        {
; 78.	            mc_result = fselGetLocation(&g_reader_vars.location);
	CALL	LWRD ?0116
; 79.	            fselSetLocation(&g_reader_vars.location);
	LD	DE,g_reader_vars+6
	LD	A,BYTE3 fselSetLocation
	LD	HL,LWRD fselSetLocation
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 80.	            return TRUE;
	LD	L,1
; 81.	        }
	JR	?0015
?0014:
; 82.	
; 83.	        return FALSE;
	LD	L,B
; 84.	}
?0015:
	POP	AF
	POP	AF
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
sel_prev:
; 85.	
; 86.	BOOL sel_prev(BOOL select_all)
; 87.	{
	PUSH	BC
	PUSH	DE
	PUSH	AF
; 88.	        BOOL mc_result;
; 89.	    mc_result = FSELSetMode(FSEL_DIR_REPEATALL);;
	LD	E,3
	LD	A,BYTE3 fselSetMode
	LD	HL,LWRD fselSetMode
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 90.	
; 91.	    mc_result = fselGetPrev(g_reader_vars.location.filename);
	LD	DE,g_reader_vars+32
	LD	A,BYTE3 fselGetPrev
	LD	HL,LWRD fselGetPrev
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	B,L
; 92.	    if(!mc_result)
	XOR	A
	OR	B
	JR	NZ,?0017
?0016:
; 93.	    {
; 94.	        if(fselGetErrID() == FSEL_ERR_OUTOF) {return FALSE;}//normal end
	LD	A,BYTE3 fselGetErrID
	LD	HL,LWRD fselGetErrID
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	DEC	L
	JR	NZ,?0020
?0018:
	JR	?0020
?0019:
; 95.	        //else ASSERT(FALSE);
; 96.	    }
; 97.	    else    //normal prev file
?0017:
; 98.	    {
; 99.	        mc_result = fselGetLocation(&g_reader_vars.location);
	CALL	LWRD ?0116
; 100.	        fselSetLocation(&g_reader_vars.location);
	LD	DE,g_reader_vars+6
	LD	A,BYTE3 fselSetLocation
	LD	HL,LWRD fselSetLocation
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 101.	        return TRUE;
	LD	L,1
; 102.	    }
	JR	?0021
?0020:
; 103.	    return FALSE;
	LD	L,B
; 104.	}
?0021:
	POP	AF
	POP	AF
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
show_stop:
; 105.	
; 106.	
; 107.	/****************************************
; 108.	*Function Name:show_stop
; 109.	*
; 110.	*****************************************/
; 111.	
; 112.	int show_stop(void)
; 113.	{
	PUSH	BC
	PUSH	DE
	PUSH	IY
	PUSH	IX
	LD	IX,0
	ADD	IX,SP
	LD	HL,65518
	ADD	HL,SP
	LD	SP,HL
; 114.	        bool  need_draw=FALSE;
; 115.	        bool  mc_result;
; 116.	        unsigned char err_id;
; 117.	        int key;
; 118.	        int result;
; 119.	        int top, bottom, old_active, tmp, i, cur_group;
; 120.	        BOOL file_changed=TRUE;    //文件改变
; 121.	     bool list_change;
; 122.	        g_menu_active=TRUE;
	LD	A,1
	LD	(g_menu_active),A
; 123.	        output8(0x4e,input8(0x4e)|0x8);
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 124.	     mc_result = fselInit(FSEL_TYPE_TXT,  FSEL_ALL_SEQUENCE, 0,g_reader_vars.location.disk);  // init the file selector
	LD	HL,g_reader_vars+6
	LD	C,(HL)
	PUSH	BC
	LD	C,0
	PUSH	BC
	LD	E,4
	LD	A,BYTE3 fselInit
	LD	HL,LWRD fselInit
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
	POP	AF
; 125.	      need_sel_file = TRUE;
	LD	A,1
	LD	(need_sel_file),A
; 126.	      list_change = FALSE;
	LD	(IX-18),0
	LD	(IX-17),A
	LD	(IX-16),0
?0023:
; 127.	      while(1)
; 128.	      {
; 129.	            if(need_sel_file)
	LD	A,(need_sel_file)
	OR	A
	JR	Z,?0026
?0025:
; 130.	            {       // 设置路径,初始化驱动器
; 131.	                    //  BYTE err_id;
; 132.	                    if(UpdateFileSelector() == 0)
	LD	A,BYTE3 UpdateFileSelector
	LD	HL,LWRD UpdateFileSelector
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	A,L
	OR	H
	JR	NZ,?0028
?0027:
; 133.	                    {
; 134.	                          return 0;
	LD	L,A
	LD	H,A
; 135.	                    }
	JP	LWRD ?0096
?0028:
; 136.	                        need_sel_file = FALSE;
	XOR	A
	LD	(need_sel_file),A
; 137.	                        file_changed = TRUE;
; 138.	                        need_draw = TRUE;
	LD	(IX-17),1
	LD	(IX-18),1
?0026:
; 139.	            }
; 140.	                if(file_changed)
	OR	(IX-17)
	JR	Z,?0030
?0029:
; 141.	                {
; 142.	                                      //获得序号
; 143.	                        active = fselGetNo();
	LD	A,BYTE3 fselGetNo
	LD	HL,LWRD fselGetNo
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	(active),HL
; 144.	                        if(active > 0)
	LD	C,L
	LD	B,H
	LD	HL,0
	OR	128
	SBC	HL,BC
	JP	PO,?0104
	XOR	H
?0104:
	JP	P,?0032
?0031:
; 145.	                            active--;
	LD	L,C
	LD	H,B
	DEC	HL
	LD	(active),HL
?0032:
; 146.	                        g_file_total = fselGetTotal();
	LD	A,BYTE3 fselGetTotal
	LD	HL,LWRD fselGetTotal
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	(g_file_total),HL
?0034:
; 147.	                        while(ap_get_message()!= AP_KEY_NULL) {;}
	CALL	LWRD ap_get_message
	OR	A
	JR	NZ,?0034
?0035:
?0033:
; 148.	                        ap_message_init(NULL);
	LD	E,A
	LD	D,A
	LD	A,BYTE3 ap_message_init
	LD	HL,LWRD ap_message_init
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 149.	                
; 150.	                        //获得 loaction
; 151.	                        fselGetLocation(&g_reader_vars.location);
	CALL	LWRD ?0116
; 152.	                        make_dirname();
	LD	A,BYTE3 make_dirname
	LD	HL,LWRD make_dirname
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 153.	                              file_changed = FALSE;
; 154.	                              need_draw = TRUE;
	LD	(IX-17),0
	LD	(IX-18),1
?0030:
; 155.	                }
; 156.	                  output8(0x4e,input8(0x4e)|0x08);
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 157.	                if(need_draw)
	XOR	A
	OR	(IX-18)
	JP	Z,?0037
?0036:
; 158.	                {
; 159.	                  old_active=active;
	LD	HL,(active)
	LD	(IX-6),L
	LD	(IX-5),H
; 160.	                        cur_group = active / 6;
	LD	BC,6
	EX	DE,HL
	CALL	LWRD ?SS_DIV_L02
	LD	(IX-8),E
	LD	(IX-7),D
; 161.	                        top = cur_group*6;
	EX	DE,HL
	ADD	HL,HL
	LD	C,L
	LD	B,H
	ADD	HL,HL
	ADD	HL,BC
	LD	(IX-10),L
	LD	(IX-9),H
; 162.	                        tmp = g_file_total - 1;
	LD	BC,(g_file_total)
	DEC	BC
; 163.	                        bottom = top+5;
	LD	DE,5
	ADD	HL,DE
	LD	(IX-4),L
	LD	(IX-3),H
; 164.	                  if(bottom>tmp)bottom = tmp;
	EX	DE,HL
	LD	L,C
	LD	H,B
	OR	128
	SBC	HL,DE
	JP	PO,?0105
	XOR	H
?0105:
	JP	P,?0039
?0038:
	LD	L,C
	LD	H,B
	LD	(IX-4),L
	LD	(IX-3),H
?0039:
; 165.	
; 166.	                  //获得 loaction
; 167.	                  fselGetLocation(&g_reader_vars.location);
	CALL	LWRD ?0116
; 168.	                  reinit_idm_buf_reader(top, bottom, 0, g_comval.langid);
	LD	BC,(g_comval+12)
	LD	B,0
	PUSH	BC
	LD	L,B
	LD	H,B
	PUSH	HL
	LD	C,(IX-4)
	LD	B,(IX-3)
	LD	E,(IX-10)
	LD	D,(IX-9)
	LD	A,BYTE3 reinit_idm_buf_reader
	LD	HL,LWRD reinit_idm_buf_reader
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	HL
	POP	HL
; 169.	                  ResShowPic(MENUTWO1,0,0);
	LD	C,0
	PUSH	BC
	LD	DE,196
	LD	A,BYTE3 ResShowPic
	LD	HL,LWRD ResShowPic
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
; 170.	                  ///-SetTextOutMode(1);
; 171.	                  SetBackgdColor(0x0000df1c);
	LD	BC,0
	LD	DE,57116
	CALL	LWRD SetBackgdColor
; 172.	                  SetPenColor(Color_BLACK_def);
	LD	BC,0

⌨️ 快捷键说明

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