📄 sub_function2.lst
字号:
72
73 /*
74 ********************************************************************************
75 * void make_dirname(void)
76 *
77 * Description : 读系统变量和ap局部变量
78 *
79 * Arguments : void
80 *
81 * Returns : void
82 *
83 * Notes :
84 *
85 ********************************************************************************
86 */
87 void make_dirname(void)
88 {
\ 00B8 C5 PUSH BC
\ 00B9 D5 PUSH DE
\ 00BA DDE5 PUSH IX
\ 00BC 21E0FF LD HL,65504
\ 00BF 39 ADD HL,SP
\ 00C0 F9 LD SP,HL
89 int result;
90 char Backbuf[32];
91 fselGetLocation(&g_amv_vars.location);
\ 00C1 110500 LD DE,g_amv_vars+5
\ 00C4 3E00 LD A,BYTE3 fselGetLocation
\ 00C6 210000 LD HL,LWRD fselGetLocation
\ 00C9 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
92 if(g_amv_vars.location.path[0]==':')
\ 00CC 3A1300 LD A,(g_amv_vars+19)
\ 00CF FE3A CP 58
\ 00D1 200B JR NZ,?0013
\ 00D3 ?0012:
93 {
94 strcpy(dir_name,"ROOT");
\ 00D3 110000 LD DE,?0014
\ 00D6 210000 LD HL,dir_name
\ 00D9 CD0000 CALL LWRD ?STRCPY_L11
95 }
96 else
\ 00DC 1864 JR ?0015
\ 00DE ?0013:
97 {
98
99 FS_Backup(Backbuf,FS_BACKUP_DIRINFO,0);//目录项备份
\ 00DE 210000 LD HL,0
\ 00E1 E5 PUSH HL
\ 00E2 0E02 LD C,2
\ 00E4 23 INC HL
\ 00E5 23 INC HL
\ 00E6 39 ADD HL,SP
\ 00E7 EB EX DE,HL
\ 00E8 CD0000 CALL LWRD FS_Backup
\ 00EB E1 POP HL
100
101 dir_name[0] = ':';
\ 00EC 3E3A LD A,58
\ 00EE 320000 LD (dir_name),A
102 FS_CD(dir_name);
\ 00F1 110000 LD DE,dir_name
\ 00F4 CD0000 CALL LWRD FS_CD
103 memcpy(dir_name, g_amv_vars.location.path, 12);
\ 00F7 010C00 LD BC,12
\ 00FA 110000 LD DE,dir_name
\ 00FD 211300 LD HL,g_amv_vars+19
\ 0100 EDB0 LDIR
104 result = FS_GetName(dir_name, 14); //取出长名
\ 0102 0E0E LD C,14
\ 0104 110000 LD DE,dir_name
\ 0107 CD0000 CALL LWRD FS_GetName
\ 010A 0600 LD B,0
105 if (result != 0)
\ 010C B7 OR A
\ 010D 2815 JR Z,?0017
\ 010F ?0016:
106 {
107 unitochar(dir_name, sizeof(dir_name), g_langid);
\ 010F 3A0000 LD A,(g_langid)
\ 0112 4F LD C,A
\ 0113 C5 PUSH BC
\ 0114 0E1E LD C,30
\ 0116 110000 LD DE,dir_name
\ 0119 3E00 LD A,BYTE3 unitochar
\ 011B 210000 LD HL,LWRD unitochar
\ 011E CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0121 F1 POP AF
108 }
109 else
\ 0122 1810 JR ?0018
\ 0124 ?0017:
110 {
111 memcpy(dir_name, g_amv_vars.location.path, 12);
\ 0124 0E0C LD C,12
\ 0126 110000 LD DE,dir_name
\ 0129 211300 LD HL,g_amv_vars+19
\ 012C EDB0 LDIR
112 dir_name[8]=0;
\ 012E 320800 LD (dir_name+8),A
113 dir_name[9]=0;
\ 0131 320900 LD (dir_name+9),A
\ 0134 ?0018:
114 }
115 FS_Restore(Backbuf,FS_RESTORE_DIRINFO,0);//目录项恢复
\ 0134 210000 LD HL,0
\ 0137 E5 PUSH HL
\ 0138 0E02 LD C,2
\ 013A 23 INC HL
\ 013B 23 INC HL
\ 013C 39 ADD HL,SP
\ 013D EB EX DE,HL
\ 013E CD0000 CALL LWRD FS_Restore
\ 0141 E1 POP HL
\ 0142 ?0015:
116 }
117
118
119 }
\ 0142 212000 LD HL,32
\ 0145 ?0043:
\ 0145 39 ADD HL,SP
\ 0146 F9 LD SP,HL
\ 0147 DDE1 POP IX
\ 0149 D1 POP DE
\ 014A C1 POP BC
\ 014B C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 014E read_var:
120
121 void read_var( void )
122 {
\ 014E C5 PUSH BC
\ 014F D5 PUSH DE
\ 0150 DDE5 PUSH IX
\ 0152 21D2FF LD HL,65490
\ 0155 39 ADD HL,SP
\ 0156 F9 LD SP,HL
123 int result;
124 browser_vars_t temp_browser_vars;
125
126
127 //read comval
128 result = VMRead(& g_comval, VM_SYSTEM, sizeof(g_comval));
\ 0157 212000 LD HL,32
\ 015A E5 PUSH HL
\ 015B 010002 LD BC,512
\ 015E 110000 LD DE,g_comval
\ 0161 CD0000 CALL LWRD VMRead
\ 0164 E1 POP HL
129 ASSERT(result);
130
131 //check if valid
132 if (g_comval.magic != MAGIC_COMVAL)
\ 0165 21ADDE LD HL,57005
\ 0168 ED4B0000 LD BC,(g_comval)
\ 016C A7 AND A
\ 016D ED42 SBC HL,BC
\ 016F 2806 JR Z,?0020
\ 0171 ?0019:
133 {
134 GetDefaultComval(&g_comval);
\ 0171 110000 LD DE,g_comval
\ 0174 CD0000 CALL LWRD GetDefaultComval
\ 0177 ?0020:
135 }
136
137 g_langid = g_comval.langid;//记录系统语言
\ 0177 3A0C00 LD A,(g_comval+12)
\ 017A 320000 LD (g_langid),A
138 g_BatteryType = g_comval.BatteryType;//记录电池类型
\ 017D 3A0F00 LD A,(g_comval+15)
\ 0180 320000 LD (g_BatteryType),A
139
140 ap_message_init(& g_comval);
\ 0183 110000 LD DE,g_comval
\ 0186 3E00 LD A,BYTE3 ap_message_init
\ 0188 210000 LD HL,LWRD ap_message_init
\ 018B CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
141
142 //read ap vars
143 result = VMRead(& g_amv_vars, VM_AP_AMV, sizeof(g_amv_vars));
\ 018E 213800 LD HL,56
\ 0191 E5 PUSH HL
\ 0192 010048 LD BC,18432
\ 0195 110000 LD DE,g_amv_vars
\ 0198 CD0000 CALL LWRD VMRead
\ 019B E1 POP HL
144 ASSERT(result);
145
146 //check if valid
147 if (g_amv_vars.magic != MAGIC_AMV)
\ 019C 216D61 LD HL,24941
\ 019F ED4B0000 LD BC,(g_amv_vars)
\ 01A3 A7 AND A
\ 01A4 ED42 SBC HL,BC
\ 01A6 2829 JR Z,?0022
\ 01A8 ?0021:
148 {
149
150 g_amv_vars.magic = MAGIC_AMV;
\ 01A8 216D61 LD HL,24941
\ 01AB 220000 LD (g_amv_vars),HL
151 g_amv_vars.volume = 24;
\ 01AE 3E18 LD A,24
\ 01B0 320200 LD (g_amv_vars+2),A
152 output8(0x87, 24|0xe0);
\ 01B3 3EF8 LD A,248
\ 01B5 D387 OUT (135),A
153 g_amv_vars.repeat_mode = FSEL_ALL_SEQUENCE;
\ 01B7 AF XOR A
\ 01B8 320300 LD (g_amv_vars+3),A
154 g_amv_vars.location.disk = 'C';
\ 01BB 3E43 LD A,67
\ 01BD 320500 LD (g_amv_vars+5),A
155
156 strcpy(g_amv_vars.location.path, FS_CD_ROOT);
\ 01C0 110500 LD DE,?0023
\ 01C3 211300 LD HL,g_amv_vars+19
\ 01C6 CD0000 CALL LWRD ?STRCPY_L11
157 ClearTimePara();
\ 01C9 3E00 LD A,BYTE3 ClearTimePara
\ 01CB 218D02 LD HL,LWRD ClearTimePara
\ 01CE CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 01D1 ?0022:
158 }
159 if(g_from_browser)
\ 01D1 3A0000 LD A,(g_from_browser)
\ 01D4 B7 OR A
\ 01D5 2827 JR Z,?0025
\ 01D7 ?0024:
160 {
161 VMRead(&temp_browser_vars, VM_AP_BROWSER, sizeof(browser_vars_t));
\ 01D7 212D00 LD HL,45
\ 01DA E5 PUSH HL
\ 01DB 01004C LD BC,19456
\ 01DE 2E02 LD L,2
\ 01E0 39 ADD HL,SP
\ 01E1 EB EX DE,HL
\ 01E2 CD0000 CALL LWRD VMRead
\ 01E5 E1 POP HL
162 memcpy(&g_amv_vars.location, &temp_browser_vars.location, sizeof(file_location_t));
\ 01E6 012B00 LD BC,43
\ 01E9 110500 LD DE,g_amv_vars+5
\ 01EC 68 LD L,B
\ 01ED 60 LD H,B
\ 01EE 39 ADD HL,SP
\ 01EF 0E02 LD C,2
\ 01F1 09 ADD HL,BC
\ 01F2 0E2B LD C,43
\ 01F4 EDB0 LDIR
163 ClearTimePara();
\ 01F6 3E00 LD A,BYTE3 ClearTimePara
\ 01F8 218D02 LD HL,LWRD ClearTimePara
\ 01FB CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 01FE ?0025:
164 }
165
166
167 }
\ 01FE 212E00 LD HL,46
\ 0201 C34501 JP LWRD ?0043
\ 0204 DealErrCase:
168 /*
169 ********************************************************************************
170 * bool DealErrCase(void)
171 *
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -