navi.s01

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

S01
933
字号
	JP	LWRD ?0030
?0023:
; 129.	            {
; 130.	              
; 131.	              if(active_list==0)
	XOR	A
	OR	B
	JP	NZ,?0032
?0031:
; 132.	              {
; 133.	                    need_read = TRUE;  
; 134.	                    active_list = NAVI_GROUP-1;
; 135.	                    old_list = active_list;
; 136.	                    need_draw = TRUE; 
; 137.	                    direct=1; 
; 138.	                    if((g_active_list+NAVI_GROUP)<CurTotalNum)
	LD	(IX-3),1
	LD	(IX-8),5
	LD	(IX-5),1
	LD	(IX-4),1
	LD	HL,(CurTotalNum+2)
	PUSH	HL
	LD	HL,(CurTotalNum)
	PUSH	HL
	LD	L,B
	LD	H,B
	PUSH	HL
	LD	L,6
	PUSH	HL
	LD	L,(IX-18)
	LD	H,(IX-17)
	POP	BC
	ADD	HL,BC
	EX	DE,HL
	LD	L,(IX-16)
	LD	H,(IX-15)
	POP	BC
	ADC	HL,BC
	LD	C,L
	LD	B,H
	EX	DE,HL
	CALL	LWRD ?SL_CMP_L03
	JR	NC,?0034
?0033:
; 139.	                           Navfileoffset=Navfileoffset-(NAVI_GROUP+NAVI_GROUP)*sizeof(file_info_t);
	LD	HL,Navfileoffset
	LD	BC,65535
	LD	DE,64768
	CALL	LWRD ?L_ADDASG_L03
; 140.	                    else
	JR	?0035
?0034:
; 141.	                           Navfileoffset=Navfileoffset-((CurTotalNum-g_active_list)+NAVI_GROUP)*sizeof(file_info_t);
	LD	HL,(CurTotalNum)
	LD	C,(IX-18)
	LD	B,(IX-17)
	SBC	HL,BC
	EX	DE,HL
	LD	HL,(CurTotalNum+2)
	LD	C,(IX-16)
	LD	B,(IX-15)
	SBC	HL,BC
	PUSH	HL
	PUSH	DE
	LD	HL,6
	POP	BC
	ADD	HL,BC
	EX	DE,HL
	LD	L,A
	LD	H,A
	POP	BC
	CALL	LWRD ?0072
	EX	DE,HL
	LD	HL,Navfileoffset
	CALL	LWRD ?L_SUBASG_L03
?0035:
; 142.	                    if((g_active_list-NAVI_GROUP)==0)
	LD	HL,65535
	PUSH	HL
	LD	HL,65530
	PUSH	HL
	LD	L,(IX-18)
	LD	H,(IX-17)
	POP	BC
	ADD	HL,BC
	EX	DE,HL
	LD	L,(IX-16)
	LD	H,(IX-15)
	POP	BC
	ADC	HL,BC
	LD	A,E
	OR	D
	OR	L
	OR	H
	JR	NZ,?0037
?0036:
; 143.	                    {
; 144.	                        Navfileoffset=CurListoffset;
	LD	BC,(CurListoffset+2)
	LD	HL,(CurListoffset)
	LD	(Navfileoffset),HL
	LD	(Navfileoffset+2),BC
; 145.	                        head=0;
	LD	(IX-7),A
; 146.	                    }
; 147.	                    else
	JR	?0038
?0037:
; 148.	                         head = 1;
	LD	(IX-7),1
?0038:
; 149.	                    g_active_list--;
	CALL	LWRD ?0074
; 150.	                    break;
	JP	LWRD ?0061
?0032:
; 151.	              }
; 152.	              active_list--;
	DEC	(IX-8)
; 153.	              g_active_list--;
	CALL	LWRD ?0074
; 154.	              ui_Navi_list(active_list,old_list,g_active_list,1,0);                                  
	LD	C,0
	PUSH	BC
	LD	C,1
	PUSH	BC
	LD	L,(IX-16)
	LD	H,B
	PUSH	HL
	LD	L,(IX-18)
	LD	H,(IX-17)
	PUSH	HL
	LD	C,A
	CALL	LWRD ?0071
	POP	HL
	POP	HL
	POP	HL
	POP	HL
?0030:
?0040:
; 155.	            }  
; 156.	            while(ap_get_message() != 0);  
	CALL	LWRD ap_get_message
	OR	A
	JR	NZ,?0030
?0041:
; 157.	            break;
?0039:
	JP	LWRD ?0061
?0042:
; 158.	                
; 159.	          case AP_KEY_PLAY | AP_KEY_UP:    //取消退出
; 160.	            result = RESULT_IGNORE;   
; 161.	            break;                                                                                                                                        
?0043:
; 162.	                                  
; 163.	          case AP_KEY_MODE | AP_KEY_UP:    //确认退出
; 164.	             if(*(navi_buff+active_list*30)==1) //进入下一目录
	LD	C,B
	LD	B,0
	LD	DE,30
	CALL	LWRD ?S_MUL_L02
	LD	HL,navi_buff
	ADD	HL,DE
	LD	B,(HL)
	DEC	B
	JP	NZ,?0045
?0044:
; 165.	             {
; 166.	                CurListoffset =0;
	LD	C,B
	LD	(CurListoffset),BC
	LD	(CurListoffset+2),BC
; 167.	                  memcpy(&CurListoffset,(navi_buff+active_list*30+28),2);
	INC	BC
	INC	BC
	LD	HL,navi_buff+28
	LD	C,(IX-8)
	LD	DE,30
	CALL	LWRD ?S_MUL_L02
	ADD	HL,DE
	LD	DE,CurListoffset
	LD	C,2
	LDIR
; 168.	                CurListoffset=CurListoffset*16;  
	LD	HL,CurListoffset
	LD	A,4
	CALL	LWRD ?L_LSHASG_L03
; 169.	                if(g_active_list==0)  //goto 上级目录
	LD	A,(IX-18)
	OR	(IX-17)
	OR	(IX-16)
	OR	(IX-15)
	LD	BC,(CurListoffset+2)
	LD	HL,(CurListoffset)
	LD	(Navfileoffset),HL
	LD	(Navfileoffset+2),BC
	JP	NZ,?0047
?0046:
; 170.	                {
; 171.	                  Navfileoffset = CurListoffset;
; 172.	                  Navi_read_head(Navfileoffset,0,&DelNum);
	LD	HL,10
	ADD	HL,SP
	PUSH	HL
	LD	C,A
	PUSH	BC
	CALL	LWRD ?0068
	POP	AF
	POP	AF
; 173.	                  active_list = save_active;
; 174.	                  g_active_list = save_list;
; 175.	                  if(g_active_list>NAVI_GROUP-1)
	LD	B,(IX-1)
	LD	(IX-8),B
	LD	C,(IX-12)
	LD	B,(IX-11)
	LD	L,(IX-14)
	LD	H,(IX-13)
	LD	(IX-18),L
	LD	(IX-17),H
	LD	(IX-16),C
	LD	(IX-15),B
	PUSH	BC
	PUSH	HL
	LD	BC,0
	LD	HL,5
	CALL	LWRD ?SL_CMP_L03
	JR	NC,?0049
?0048:
; 176.	                  { 
; 177.	                    Navfileoffset = CurListoffset+(g_active_list/NAVI_GROUP)*NAVI_GROUP*sizeof(file_info_t);
	LD	H,B
	PUSH	BC
	LD	L,6
	PUSH	HL
	LD	C,(IX-16)
	LD	B,(IX-15)
	LD	L,(IX-18)
	LD	H,(IX-17)
	CALL	LWRD ?SL_DIV_L03
	PUSH	BC
	PUSH	HL
	LD	BC,0
	LD	HL,6
	CALL	LWRD ?L_MUL_L03
	CALL	LWRD ?0073
	PUSH	BC
	PUSH	HL
	LD	HL,(CurListoffset)
	POP	BC
	ADD	HL,BC
	EX	DE,HL
	LD	HL,(CurListoffset+2)
	POP	BC
	ADC	HL,BC
	LD	C,L
	LD	B,H
	EX	DE,HL
	LD	(Navfileoffset),HL
	LD	(Navfileoffset+2),BC
; 178.	                    head= 1;
	LD	(IX-7),1
; 179.	                  }
; 180.	                  else
	JR	?0051
?0049:
; 181.	                  {
; 182.	                   head =0; 
; 183.	                   Navfileoffset = CurListoffset;
	LD	BC,(CurListoffset+2)
	LD	HL,(CurListoffset)
	LD	(Navfileoffset),HL
	LD	(Navfileoffset+2),BC
	LD	(IX-7),0
?0050:
; 184.	                  }
; 185.	                }
; 186.	                else
	JR	?0051
?0047:
; 187.	                {
; 188.	                  save_list = g_active_list;
; 189.	                  save_active = active_list;
; 190.	                  Navfileoffset = CurListoffset;
; 191.	                  g_active_list = 0;
	LD	C,(IX-16)
	LD	B,(IX-15)
	LD	L,(IX-18)
	LD	H,(IX-17)
	LD	(IX-14),L
	LD	(IX-13),H
	LD	(IX-12),C
	LD	(IX-11),B
; 192.	                  active_list = 0;
	LD	B,(IX-8)
	LD	(IX-1),B
; 193.	                  head = 0;
	XOR	A
	LD	(IX-18),A
	LD	(IX-17),A
	LD	(IX-16),A
	LD	(IX-15),A
	LD	(IX-8),A
	LD	(IX-7),A
?0051:
; 194.	                }          
; 195.	                old_list=active_list;   
; 196.	                need_draw = TRUE;       
; 197.	                direct=0;  
; 198.	                need_read = TRUE;  
	LD	B,(IX-8)
	LD	(IX-5),1
	LD	(IX-4),0
	LD	(IX-3),1
; 199.	                continue;          
	JP	LWRD ?0005
?0045:
; 200.	            }
; 201.	             else //是文件
; 202.	             {
; 203.	                 return (check_file_type( g_active_list));
	LD	C,(IX-16)
	LD	B,(IX-15)
	LD	E,(IX-18)
	LD	D,(IX-17)
	LD	A,BYTE3 check_file_type
	LD	HL,LWRD check_file_type
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 204.	             }
	JR	?0064
; 205.	         //    while(ap_get_message() != 0);
; 206.	             break;
?0052:
; 207.	          case AP_KEY_MODE | AP_KEY_LONG:    //确认退出      
; 208.	              break;
?0053:
; 209.	                           
; 210.	          case AP_MSG_WAIT_TIMEOUT:
; 211.	            result = RESULT_IGNORE;   
	LD	IY,52
; 212.	            break;
	JR	?0061
?0054:
; 213.	                               
; 214.	          default:
; 215.	             key = ap_handle_hotkey(key);
	CALL	LWRD ap_handle_hotkey
	LD	(IX-2),A
; 216.	             if(key == RESULT_REDRAW) 
	CP	50
	JR	NZ,?0056
?0055:
; 217.	               need_draw = TRUE;
	LD	(IX-5),1
; 218.	             else 
	JR	?0059
?0056:
; 219.	              if(key != 0)
	XOR	A
	OR	(IX-2)
	JR	Z,?0059
?0058:
; 220.	              {
; 221.	                result = key;
	LD	C,A
	LD	B,0
	PUSH	BC
	POP	IY
?0059:
?0057:
; 222.	              }                                
; 223.	              if(ScrollFlag)     
	LD	A,(ScrollFlag)
	OR	A
	JR	Z,?0061
?0060:
; 224.	               ui_Navi_list(active_list,old_list,g_active_list, direct,1); //滚动屏幕       
	LD	C,1
	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
	CALL	LWRD ?0070
	POP	HL
	POP	HL
	POP	HL
	POP	HL
?0061:
; 225.	              break;
?0011:
; 226.	          }    //switch
; 227.	         
; 228.	        if(result!=0) 
	PUSH	IY
	POP	HL
	LD	A,L
	OR	H
	JR	Z,?0063
?0062:
; 229.	        {
; 230.	          //output8(0x27,IO27Bak&0xfe);     
; 231.	          //FS_FClose(Navifp); 
; 232.	         // output8(0x27,IO27Bak);     
; 233.	          return result;        
; 234.	        }   
?0064:
	POP	IY
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
?0063:
; 235.	    }//while 
; 236.	}
	JP	LWRD ?0005
?0068:
	LD	BC,(Navfileoffset+2)
	LD	DE,(Navfileoffset)
?0067:
	LD	A,BYTE3 Navi_read_head
	LD	HL,LWRD Navi_read_head
	JP	LWRD ?BANK_CALL_DIRECT_L08
?0070:
	LD	C,(IX-6)
?0071:
	LD	E,(IX-8)
?0069:
	LD	A,BYTE3 ui_Navi_list
	LD	HL,LWRD ui_Navi_list
	JP	LWRD ?BANK_CALL_DIRECT_L08
?0072:
	ADC	HL,BC
	LD	C,L
	LD	B,H
	EX	DE,HL
?0073:
	LD	A,6
	JP	LWRD ?L_LSH_L03
?0074:
	LD	L,(IX-18)
	LD	H,(IX-17)
	LD	C,(IX-16)
	LD	B,(IX-15)
	CALL	LWRD ?L_DEC_L03
	LD	(IX-18),L
	LD	(IX-17),H
	LD	(IX-16),C
	LD	(IX-15),B
	RET
	RSEG	UDATA0
CurListoffset:
	DEFS	4
Navfileoffset:
	DEFS	4
CurTotalNum:
	DEFS	4
	RSEG	APD_NAVI
navi_buff:
	DEFS	180
buffer:
	DEFS	512
	END

⌨️ 快捷键说明

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