📄 main.lst
字号:
\ 0078 DDAEFE XOR (IX-2)
\ 007B DDB6FF OR (IX-1)
\ 007E 200A JR NZ,?0006
\ 0080 ?0005:
109 {
110 list_active = 8;
\ 0080 DD36FA08 LD (IX-6),8
\ 0084 DD36FB00 LD (IX-5),0
111 }
112 else
\ 0088 1807 JR ?0007
\ 008A ?0006:
113 {
114 list_active = 0;
\ 008A AF XOR A
\ 008B DD77FA LD (IX-6),A
\ 008E DD77FB LD (IX-5),A
\ 0091 ?0007:
\ 0091 ?0009:
115 }
116
117 while(1)
118 {
119 main_list.total = MAX_SYSMENUNUM; //"+2":for MP3 recorder by ccm
\ 0091 210C00 LD HL,12
\ 0094 223F00 LD (main_list+2),HL
120 main_list.strid = main_text;
\ 0097 210000 LD HL,main_text
\ 009A 223D00 LD (main_list),HL
121 main_list.active = list_active;
\ 009D DD6EFA LD L,(IX-6)
\ 00A0 DD66FB LD H,(IX-5)
\ 00A3 224100 LD (main_list+4),HL
122 main_list.string_id = g_comval.langid;
\ 00A6 3A0C00 LD A,(g_comval+12)
\ 00A9 324500 LD (main_list+8),A
123 main_list.headid = SSYSTEM;
\ 00AC 215D01 LD HL,349
\ 00AF 224300 LD (main_list+6),HL
124
125 ui_auto_select = FALSE;
\ 00B2 AF XOR A
\ 00B3 320000 LD (ui_auto_select),A
126
127 //show menu
128 result = ui_popup_list(&main_list, NULL);
\ 00B6 0E00 LD C,0
\ 00B8 C5 PUSH BC
\ 00B9 210000 LD HL,0
\ 00BC E5 PUSH HL
\ 00BD 113D00 LD DE,main_list
\ 00C0 3E00 LD A,BYTE3 ui_popup_list
\ 00C2 210000 LD HL,LWRD ui_popup_list
\ 00C5 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 00C8 F1 POP AF
\ 00C9 F1 POP AF
\ 00CA E5 PUSH HL
\ 00CB FDE1 POP IY
129
130 ui_auto_select = TRUE;
\ 00CD 3E01 LD A,1
\ 00CF 320000 LD (ui_auto_select),A
131
132 //check press play
133 if(result == RESULT_IGNORE)
\ 00D2 3E34 LD A,52
\ 00D4 AD XOR L
\ 00D5 B4 OR H
\ 00D6 2006 JR NZ,?0012
\ 00D8 ?0011:
134 {
135 result = 0;
\ 00D8 FD210000 LD IY,0
136 break;
\ 00DC 1849 JR ?0008
\ 00DE ?0012:
137 }
138 //check hotkey
139 else if(result != 0) break;
\ 00DE FDE5 PUSH IY
\ 00E0 E1 POP HL
\ 00E1 7D LD A,L
\ 00E2 B4 OR H
\ 00E3 2042 JR NZ,?0008
\ 00E5 ?0013:
\ 00E5 ?0014:
140 else if(main_list.active == MAX_SYSMENUNUM-1) break; //user choose exit.//"12": modified by ccm 04-06-09
\ 00E5 2A4100 LD HL,(main_list+4)
\ 00E8 3E0B LD A,11
\ 00EA AD XOR L
\ 00EB B4 OR H
\ 00EC 2839 JR Z,?0008
\ 00EE ?0015:
\ 00EE ?0016:
141 //normal user-select
142 else ASSERT(result == 0);
143
144 //save the active, because ui should change it
145 list_active = main_list.active;
\ 00EE 2A4100 LD HL,(main_list+4)
\ 00F1 DD75FA LD (IX-6),L
\ 00F4 DD74FB LD (IX-5),H
146
147 ClearScreen(NULL);
\ 00F7 110000 LD DE,0
\ 00FA CD0000 CALL LWRD ClearScreen
148 //check selected value
149 result = entries[main_list.active]();
\ 00FD 2A4100 LD HL,(main_list+4)
\ 0100 4D LD C,L
\ 0101 44 LD B,H
\ 0102 29 ADD HL,HL
\ 0103 09 ADD HL,BC
\ 0104 011800 LD BC,entries
\ 0107 09 ADD HL,BC
\ 0108 4E LD C,(HL)
\ 0109 23 INC HL
\ 010A 46 LD B,(HL)
\ 010B 23 INC HL
\ 010C 7E LD A,(HL)
\ 010D 69 LD L,C
\ 010E 60 LD H,B
\ 010F CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0112 E5 PUSH HL
\ 0113 FDE1 POP IY
150 if(result == RESULT_IGNORE)
\ 0115 3E34 LD A,52
\ 0117 AD XOR L
\ 0118 B4 OR H
\ 0119 2004 JR NZ,?0018
\ 011B ?0017:
151 {
152 result = 0;
\ 011B FD210000 LD IY,0
\ 011F ?0018:
153 }
154 if(result != 0) break;
\ 011F FDE5 PUSH IY
\ 0121 E1 POP HL
\ 0122 7D LD A,L
\ 0123 B4 OR H
\ 0124 CA9100 JP Z,?0007
\ 0127 ?0019:
\ 0127 ?0020:
\ 0127 ?0008:
155
156 }//while(1)
157
158 //close res file
159 ResClose(res_fp);
\ 0127 ED5B0000 LD DE,(res_fp)
\ 012B 3E00 LD A,BYTE3 ResClose
\ 012D 210000 LD HL,LWRD ResClose
\ 0130 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
160
161 //为什么vmwrite() 要放在 resclose() 之后才不死机?
162 //save settings
163 mc_result = VMWrite(&g_comval, VM_SYSTEM);
\ 0133 010002 LD BC,512
\ 0136 110000 LD DE,g_comval
\ 0139 CD0000 CALL LWRD VMWrite
\ 013C DD77FC LD (IX-4),A
164 ASSERT(mc_result);
165
166 return result;
\ 013F FDE5 PUSH IY
\ 0141 E1 POP HL
167 }
\ 0142 DDF9 LD SP,IX
\ 0144 DDE1 POP IX
\ 0146 FDE1 POP IY
\ 0148 C1 POP BC
\ 0149 C30000 JP LWRD ?BANK_FAST_LEAVE_L08
\ 0000 RSEG CSTR
\ 0000 ?0004:
\ 0000 75693330 DEFB 'ui30.res'
\ 0004 2E726573
\ 0008 00 DEFB 0
\ 0000 RSEG CONST
\ 0000 main_text:
\ 0000 F101 DEFW 497
\ 0002 3102 DEFW 561
\ 0004 4402 DEFW 580
\ 0006 F301 DEFW 499
\ 0008 F401 DEFW 500
\ 000A F501 DEFW 501
\ 000C F701 DEFW 503
\ 000E F801 DEFW 504
\ 0010 F901 DEFW 505
\ 0012 BA01 DEFW 442
\ 0014 CA01 DEFW 458
\ 0016 4202 DEFW 578
\ 0018 entries:
\ 0018 000000 DEFA show_clock
\ 001B 000000 DEFA show_rectype
\ 001E 000000 DEFA screen_set
\ 0021 000000 DEFA show_language
\ 0024 000000 DEFA show_powerdown
\ 0027 000000 DEFA show_replay
\ 002A 000000 DEFA show_memory
\ 002D 000000 DEFA show_firmware
\ 0030 000000 DEFA upgrade_firmware
\ 0033 000000 DEFA show_fmttype
\ 0036 000000 DEFA ear_protect
\ 0000 RSEG UDATA0
\ 0000 g_comval:
\ 0020 DEFS 32
\ 0020 g_setting_vars:
\ 0022 DEFS 2
\ 0022 slider:
\ 002D DEFS 11
\ 002D progress:
\ 0034 DEFS 7
\ 0034 list:
\ 003D DEFS 9
\ 003D main_list:
\ 0046 DEFS 9
\ 0046 charge_flag:
\ 0047 DEFS 1
\ 0047 END
Errors: none
Warnings: none
Code size: 332
Constant size: 66
Static variable size: Data(71) Iram(0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -