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 + -
显示快捷键?