navi.s01

来自「炬力方案176*132软件源码,适用于AK1025」· S01 代码 · 共 933 行 · 第 1/2 页

S01
933
字号
	NAME	navi(17)
	RSEG	APC_NAVI(0)
	RSEG	UDATA0(0)
	RSEG	APD_NAVI(0)
	PUBLIC	CurListoffset
	PUBLIC	CurTotalNum
	PUBLIC	Navfileoffset
	EXTERN	Navi_read_head
	EXTERN	ScrollFlag
	PUBLIC	UI_play_Navi
	EXTERN	ap_get_message
	EXTERN	ap_handle_hotkey
	PUBLIC	buffer
	EXTERN	check_file_type
	PUBLIC	navi_buff
	EXTERN	ui_Navi_list
	EXTERN	?CLZ80B_4_04_L00
	EXTERN	?UC_MOD_L01
	EXTERN	?S_MUL_L02
	EXTERN	?L_LSH_L03
	EXTERN	?L_MUL_L03
	EXTERN	?SL_DIV_L03
	EXTERN	?SL_MOD_L03
	EXTERN	?SL_CMP_L03
	EXTERN	?L_INC_L03
	EXTERN	?L_DEC_L03
	EXTERN	?L_ADDASG_L03
	EXTERN	?L_SUBASG_L03
	EXTERN	?L_LSHASG_L03
	EXTERN	?C_V_SWITCH_L06
	EXTERN	?BANK_CALL_DIRECT_L08
	EXTERN	?BANK_LEAVE_DIRECT_L08
	EXTERN	?ENT_AUTO_DIRECT_L09
	RSEG	APC_NAVI
UI_play_Navi:
; 1.	#include "ap_music.h"
; 2.	//extern BOOL Navi_read_data(long fileoffset,char direct);
; 3.	//extern BOOL GetFilePath(file_location_t  *location);
; 4.	//extern BOOL Navi_read(long fileoffset);
; 5.	extern BOOL Navi_read_head(long fileoffset,char direct,WORD *DelNum);
; 6.	extern BOOL GetFilePath(file_location_t  *location);
; 7.	extern void ui_Navi_list(BYTE active,BYTE old_active,long file_active,char direct,bool scroll_flag);
; 8.	extern int check_file_type(long active);
; 9.	extern  char     ScrollFlag;   //滚动标志位  
; 10.	
; 11.	long  CurListoffset; //每个表的偏移量
; 12.	long  Navfileoffset;    //当前表的已经读的偏移量
; 13.	long  CurTotalNum;
; 14.	
; 15.	#pragma memory=dataseg(APD_NAVI)
; 16.	//char msz_temp[12];
; 17.	char navi_buff[NAVI_GROUP*30];
; 18.	char buffer[512];
; 19.	#pragma memory=default
; 20.	
; 21.	#pragma codeseg(APC_NAVI)
; 22.	
; 23.	
; 24.	int UI_play_Navi()
; 25.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	-18
	PUSH	IY
; 26.	    
; 27.	    BOOL  need_read=FALSE;
; 28.	    BOOL  need_draw=TRUE;
; 29.	    BYTE  active_list = 0;
; 30.	    BYTE  old_list =0;
; 31.	    char  direct=0;
; 32.	    char  key;
; 33.	    long  g_active_list ;
; 34.	    WORD  DelNum=0 ;
	XOR	A
	LD	(IX-10),A
	LD	(IX-9),A
; 35.	    char  head;
; 36.	    long  save_list=0;
; 37.	    char  save_active=0;
; 38.	    
; 39.	    
; 40.	    int result=0;
; 41.	
; 42.	    if(!Navi_read_head(0,0,&DelNum))
	LD	(IX-3),A
	LD	(IX-5),1
	LD	(IX-8),A
	LD	(IX-4),A
	LD	(IX-14),A
	LD	(IX-13),A
	LD	(IX-12),A
	LD	(IX-11),A
	LD	(IX-1),A
	LD	IY,0
	LD	HL,10
	ADD	HL,SP
	PUSH	HL
	LD	C,A
	PUSH	BC
	LD	B,C
	LD	D,B
	LD	E,C
	CALL	LWRD ?0067
	POP	AF
	POP	AF
	INC	L
	DEC	L
	JR	NZ,?0003
?0002:
; 43.	    {
; 44.	        return RESULT_IGNORE;
	LD	HL,52
; 45.	    }
	JP	LWRD ?0064
?0003:
; 46.	    g_active_list =0;
; 47.	    head =1;
	XOR	A
	LD	(IX-18),A
	LD	(IX-17),A
	LD	(IX-16),A
	LD	(IX-15),A
	LD	(IX-7),1
?0005:
; 48.	    while(1)
; 49.	    {
; 50.	        if(need_read)
	XOR	A
	OR	(IX-3)
	JR	Z,?0008
?0007:
; 51.	        {
; 52.	            Navi_read_head(Navfileoffset,head,&DelNum);
	LD	HL,10
	ADD	HL,SP
	PUSH	HL
	LD	L,(IX-7)
	PUSH	HL
	CALL	LWRD ?0068
	POP	AF
	POP	AF
; 53.	            need_read=FALSE;
	LD	(IX-3),0
?0008:
; 54.	        }
; 55.	        if(need_draw)
	XOR	A
	OR	(IX-5)
	JR	Z,?0010
?0009:
; 56.	        {
; 57.	            
; 58.	            ui_Navi_list(active_list,active_list,g_active_list, direct,0);
	LD	C,0
	PUSH	BC
	LD	L,(IX-4)
	PUSH	HL
	LD	L,(IX-16)
	LD	H,(IX-15)
	PUSH	HL
	LD	L,(IX-18)
	LD	H,(IX-17)
	PUSH	HL
	LD	C,(IX-8)
	LD	E,C
	CALL	LWRD ?0069
	POP	HL
	POP	HL
	POP	HL
	POP	HL
; 59.	            need_draw = FALSE;  
	LD	(IX-5),0
?0010:
; 60.	        }
; 61.	        key = ap_get_message(); 
	CALL	LWRD ap_get_message
; 62.	        old_list = active_list; 
	LD	B,(IX-8)
	LD	(IX-6),B
; 63.	        switch( key)  
	LD	E,A
	CALL	LWRD ?C_V_SWITCH_L06
	DEFW	8
	DEFB	5
	DEFB	6
	DEFB	30
	DEFB	33
	DEFB	48
	DEFB	69
	DEFB	70
	DEFB	144
	DEFW	?0054
	DEFW	?0061
	DEFW	?0012
	DEFW	?0021
	DEFW	?0043
	DEFW	?0053
	DEFW	?0053
	DEFW	?0012
	DEFW	?0021
?0012:
; 64.	        {    
; 65.	         case AP_KEY_NEXT:
; 66.	         case AP_KEY_NEXT | AP_KEY_HOLD:                    
; 67.	          if(g_active_list< CurTotalNum-1)
	LD	HL,65535
	PUSH	HL
	PUSH	HL
	LD	HL,(CurTotalNum)
	POP	BC
	ADD	HL,BC
	EX	DE,HL
	LD	HL,(CurTotalNum+2)
	POP	BC
	ADC	HL,BC
	PUSH	HL
	PUSH	DE
	LD	C,(IX-16)
	LD	B,(IX-15)
	LD	L,(IX-18)
	LD	H,(IX-17)
	CALL	LWRD ?SL_CMP_L03
	JR	NC,?0014
?0013:
; 68.	           {              
; 69.	              g_active_list++;
	CALL	LWRD ?L_INC_L03
	LD	(IX-18),L
	LD	(IX-17),H
	LD	(IX-16),C
	LD	(IX-15),B
; 70.	              active_list++;
	INC	(IX-8)
; 71.	              if(active_list%NAVI_GROUP==0)
	LD	B,6
	LD	A,(IX-8)
	CALL	LWRD ?UC_MOD_L01
	OR	A
	JR	NZ,?0016
?0015:
; 72.	              {
; 73.	                    need_read = 1;
; 74.	                    active_list = 0;
; 75.	                    old_list = 0;
; 76.	                    need_draw = TRUE; 
; 77.	                    direct=0; 
; 78.	                    head =1;
	LD	(IX-3),1
	LD	(IX-8),A
	LD	(IX-5),1
	LD	(IX-4),A
	LD	(IX-7),1
; 79.	                    break;
	JP	LWRD ?0061
?0016:
; 80.	                  
; 81.	              }
; 82.	              ui_Navi_list(active_list,old_list,g_active_list,0,0);              
	LD	C,0
	PUSH	BC
	PUSH	BC
	LD	L,(IX-16)
	LD	H,(IX-15)
	PUSH	HL
	LD	L,(IX-18)
	LD	H,(IX-17)
	PUSH	HL
	CALL	LWRD ?0070
	POP	HL
	POP	HL
	POP	HL
	POP	HL
; 83.	            }        
; 84.	           else                 //到列表尾,回到列表头
	JR	?0017
?0014:
; 85.	           {
; 86.	               active_list = 0;
; 87.	               g_active_list = 0;
; 88.	               old_list=0;   
; 89.	               need_draw = TRUE; 
; 90.	               Navfileoffset = CurListoffset;      
	LD	BC,(CurListoffset+2)
	LD	HL,(CurListoffset)
	LD	(Navfileoffset),HL
	LD	(Navfileoffset+2),BC
; 91.	               
; 92.	               direct=0; 
; 93.	               need_read = TRUE;
; 94.	               head=0;
	LD	(IX-8),0
	XOR	A
	LD	(IX-18),A
	LD	(IX-17),A
	LD	(IX-16),A
	LD	(IX-15),A
	LD	(IX-5),1
	LD	(IX-4),A
	LD	(IX-3),1
	LD	(IX-7),A
?0017:
?0019:
; 95.	           }   
; 96.	          while(ap_get_message() != 0); 
	CALL	LWRD ap_get_message
	OR	A
	JR	NZ,?0017
?0020:
; 97.	          break;
?0018:
	JP	LWRD ?0061
?0021:
; 98.	                    
; 99.	          case AP_KEY_PREV:
; 100.	          case AP_KEY_PREV | AP_KEY_HOLD:
; 101.	            if(g_active_list==0)
	LD	A,(IX-18)
	OR	(IX-17)
	OR	(IX-16)
	OR	(IX-15)
	JP	NZ,?0023
?0022:
; 102.	             {
; 103.	              if(CurTotalNum<=NAVI_GROUP)
	LD	HL,(CurTotalNum+2)
	PUSH	HL
	LD	HL,(CurTotalNum)
	PUSH	HL
	LD	C,A
	LD	B,A
	LD	HL,6
	CALL	LWRD ?SL_CMP_L03
	JR	C,?0025
?0024:
; 104.	              {
; 105.	                        head = 0; 
; 106.	                        Navfileoffset=CurListoffset;   
	LD	BC,(CurListoffset+2)
	LD	HL,(CurListoffset)
	LD	(Navfileoffset),HL
	LD	(Navfileoffset+2),BC
	LD	(IX-7),A
; 107.	              }
; 108.	              else
	JP	LWRD ?0026
?0025:
; 109.	              {
; 110.	                      if(CurTotalNum%NAVI_GROUP==0)
	LD	H,B
	PUSH	BC
	PUSH	HL
	LD	BC,(CurTotalNum+2)
	LD	HL,(CurTotalNum)
	CALL	LWRD ?SL_MOD_L03
	LD	A,L
	OR	H
	OR	C
	OR	B
	JR	NZ,?0028
?0027:
; 111.	                      {
; 112.	                           Navfileoffset=CurListoffset+sizeof(Location_Path_t)+(CurTotalNum-NAVI_GROUP-1)*sizeof(file_info_t);    
	LD	HL,65535
	PUSH	HL
	LD	HL,65529
	PUSH	HL
	LD	HL,(CurTotalNum)
	POP	BC
	ADD	HL,BC
	EX	DE,HL
	LD	HL,(CurTotalNum+2)
	JR	?0065
; 113.	                      }
; 114.	                      else
?0028:
; 115.	                      {
; 116.	                           Navfileoffset=CurListoffset+sizeof(Location_Path_t)+((CurTotalNum-1-(CurTotalNum)%NAVI_GROUP))*sizeof(file_info_t);   
	LD	HL,0
	PUSH	HL
	LD	L,6
	PUSH	HL
	LD	BC,(CurTotalNum+2)
	LD	HL,(CurTotalNum)
	CALL	LWRD ?SL_MOD_L03
	LD	E,C
	LD	D,B
	LD	C,L
	LD	B,H
	LD	HL,(CurTotalNum)
	SBC	HL,BC
	LD	C,L
	LD	B,H
	LD	HL,(CurTotalNum+2)
	SBC	HL,DE
	PUSH	HL
	PUSH	BC
	LD	HL,65535
	POP	BC
	ADD	HL,BC
	EX	DE,HL
	LD	HL,65535
?0065:
	POP	BC
	CALL	LWRD ?0072
	PUSH	BC
	PUSH	HL
	LD	HL,(CurListoffset)
	POP	BC
	ADD	HL,BC
	EX	DE,HL
	LD	HL,(CurListoffset+2)
	POP	BC
	ADC	HL,BC
	PUSH	HL
	PUSH	DE
	LD	HL,64
	POP	BC
	ADD	HL,BC
	EX	DE,HL
	LD	HL,0
	POP	BC
	ADC	HL,BC
	LD	C,L
	LD	B,H
	EX	DE,HL
	LD	(Navfileoffset),HL
	LD	(Navfileoffset+2),BC
?0029:
; 117.	                      }
; 118.	                       head = 1;    
	LD	(IX-7),1
?0026:
; 119.	              }
; 120.	              g_active_list =  CurTotalNum-1;                 
	LD	HL,65535
	PUSH	HL
	PUSH	HL
	LD	HL,(CurTotalNum)
	POP	BC
	ADD	HL,BC
	EX	DE,HL
	LD	HL,(CurTotalNum+2)
	POP	BC
	ADC	HL,BC
	LD	C,L
	LD	B,H
	EX	DE,HL
	LD	(IX-18),L
	LD	(IX-17),H
	LD	(IX-16),C
	LD	(IX-15),B
; 121.	              active_list = (CurTotalNum-1)%NAVI_GROUP;
	LD	DE,0
	PUSH	DE
	LD	E,6
	PUSH	DE
	CALL	LWRD ?SL_MOD_L03
	LD	(IX-8),L
; 122.	              old_list=active_list;
; 123.	              need_read = TRUE;  
; 124.	              need_draw = TRUE;
; 125.	              direct=2;    
	LD	(IX-3),1
	LD	(IX-5),1
	LD	(IX-4),2
; 126.	                   
; 127.	             } 
; 128.	            else

⌨️ 快捷键说明

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