📄 decodermenu.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 27/Sep/107 17:35:17 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = banked #
# Source file = d:\case_i_d913f\ap\ap_reader\decodermenu.c #
# List file = d:\case_i_d913f\ap\ap_reader\list\decodermenu.lst #
# Object file = d:\case_i_d913f\ap\ap_reader\obj\decodermenu.r01 #
# ASM file = d:\case_i_d913f\ap\ap_reader\list\decodermenu.s01 #
# Command line = -v0 -mb -OD:\case_i_d913f\ap\ap_reader\Obj\ -e -K #
# -w -gA -s9 -RCODE -r0 -DNAPDEBUG -DAMV_JPG_TXT #
# -LD:\case_i_d913f\ap\ap_reader\List\ -q -t8 #
# -AD:\case_i_d913f\ap\ap_reader\List\ #
# -ND:\case_i_d913f\ap\ap_reader\List\ -X #
# -Id:\sdk_i_913f\inc\ -Id:\case_i_d913f\inc\ #
# d:\case_i_d913f\AP\AP_READER\DecoderMenu.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME decodermenu(17)
\ 0000 RSEG CODE(0)
\ 0000 RSEG CONST(0)
\ 0000 RSEG UDATA0(0)
\ 0000 EXTERN BankSwitch
\ 0000 EXTERN DRV_DetectUD
\ 0000 EXTERN DecodeOnePage
\ 0000 EXTERN LoadData
\ 0000 PUBLIC MenuInReader
\ 0000 PUBLIC MenuStrID
\ 0000 PUBLIC MenuStrIDWithCard
\ 0000 EXTERN fselGetLocation
\ 0000 EXTERN fselInit
\ 0000 EXTERN fselSetMode
\ 0000 EXTERN g_DiskStateFlag
\ 0000 EXTERN g_comval
\ 0000 EXTERN g_menu_active
\ 0000 EXTERN g_reader_vars
\ 0000 PUBLIC list
\ 0000 EXTERN need_sel_file
\ 0000 PUBLIC play_text
\ 0000 PUBLIC slider
\ 0000 PUBLIC sub_list
\ 0000 EXTERN ui_delete
\ 0000 EXTERN ui_delete_all
\ 0000 EXTERN ui_directory
\ 0000 EXTERN ui_err_msg
\ 0000 EXTERN ui_popup_list
\ 0000 EXTERN ui_show_msg
\ 0000 EXTERN ui_slider
\ 0000 EXTERN ?CLZ80B_4_04_L00
\ 0000 EXTERN ?S_S_SWITCH_L06
\ 0000 EXTERN ?BANK_CALL_DIRECT_L08
\ 0000 EXTERN ?BANK_FAST_LEAVE_L08
\ 0000 RSEG CODE
\ 0000 MenuInReader:
1 /****************************************
2 * File Name: DecoderMenu.c
3 * Write By : Jack lee
4 * Date :2004-9-29 15:22
5 *
6 *
7 *****************************************/
8
9
10
11
12 #include "actos.h"
13 #include "ap_common.h"
14 #include "display.h"
15 #include "ap_reader.h"
16 #include "bookmark.h"
17 extern void DecodeOnePage(WORD top,WORD bottom,BYTE type, BYTE string_id);
18 extern bool g_menu_active;
19 extern bool need_sel_file;
20 extern BYTE g_DiskStateFlag;
21 pop_up_list_t list;
22 pop_up_list_t sub_list;
23 slider_t slider;
24 const WORD MenuStrID[5]={MSTOP1,JPEGSET,MSTOP3,MSTOP4,MSTOP5};//,VSTOPM4};
25 const WORD MenuStrIDWithCard[6]={MSTOP1,MSTOP2,JPEGSET,MSTOP3,MSTOP4,MSTOP5};
26 const WORD play_text[2]={JPEGSET1, JPEGSET2};
27
28 int MenuInReader(void)
29 {
\ 0000 C5 PUSH BC
\ 0001 D5 PUSH DE
\ 0002 FDE5 PUSH IY
\ 0004 DDE5 PUSH IX
\ 0006 F5 PUSH AF
30 int result,active;
31 bool g_card_ok=FALSE;
32 result = DRV_DetectUD(1); //检查是否有卡
\ 0007 1E01 LD E,1
\ 0009 CD0000 CALL LWRD DRV_DetectUD
\ 000C 4F LD C,A
\ 000D 0600 LD B,0
\ 000F 68 LD L,B
33 if(result == 0x020)
\ 0010 60 LD H,B
\ 0011 39 ADD HL,SP
\ 0012 70 LD (HL),B
\ 0013 3E20 LD A,32
\ 0015 A9 XOR C
\ 0016 2002 JR NZ,?0003
\ 0018 ?0002:
34 g_card_ok = TRUE;
\ 0018 3601 LD (HL),1
\ 001A ?0003:
35
36 list.active=0;
\ 001A 68 LD L,B
\ 001B 60 LD H,B
\ 001C 220400 LD (list+4),HL
37 list.headid = STOPMENU;
\ 001F 218B01 LD HL,395
\ 0022 220600 LD (list+6),HL
38 if(g_card_ok)
\ 0025 68 LD L,B
\ 0026 60 LD H,B
\ 0027 39 ADD HL,SP
\ 0028 AF XOR A
\ 0029 B6 OR (HL)
\ 002A 280B JR Z,?0005
\ 002C ?0004:
39 {
40 list.total = 6;
\ 002C 210600 LD HL,6
\ 002F 220200 LD (list+2),HL
41 list.strid = MenuStrIDWithCard;
\ 0032 210A00 LD HL,MenuStrIDWithCard
\ 0035 1809 JR ?0072
42 }
43 else
\ 0037 ?0005:
44 {
45 list.total=5;
\ 0037 210500 LD HL,5
\ 003A 220200 LD (list+2),HL
46 list.strid=MenuStrID;
\ 003D 210000 LD HL,MenuStrID
\ 0040 ?0072:
\ 0040 220000 LD (list),HL
\ 0043 ?0006:
47 }
48 list.string_id = g_comval.langid;
\ 0043 3A0C00 LD A,(g_comval+12)
\ 0046 320800 LD (list+8),A
49
50 result = ui_popup_list(&list, NULL);
\ 0049 48 LD C,B
\ 004A C5 PUSH BC
\ 004B C5 PUSH BC
\ 004C 110000 LD DE,list
\ 004F 3E00 LD A,BYTE3 ui_popup_list
\ 0051 210000 LD HL,LWRD ui_popup_list
\ 0054 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0057 F1 POP AF
\ 0058 F1 POP AF
\ 0059 E5 PUSH HL
\ 005A DDE1 POP IX
51
52 if (g_card_ok)
\ 005C 69 LD L,C
\ 005D 60 LD H,B
\ 005E 39 ADD HL,SP
\ 005F AF XOR A
\ 0060 B6 OR (HL)
\ 0061 2829 JR Z,?0010
\ 0063 ?0007:
53 {
54
55 if (DRV_DetectUD(1) != 0x20)
\ 0063 1E01 LD E,1
\ 0065 CD0000 CALL LWRD DRV_DetectUD
\ 0068 FE20 CP 32
\ 006A 2820 JR Z,?0010
\ 006C ?0009:
56 {
57 g_card_ok=FALSE;
58 ui_err_msg(CARDPULL,CARDPULL,g_comval.langid);//显示卡拔出
\ 006C ED4B0C00 LD BC,(g_comval+12)
\ 0070 0600 LD B,0
\ 0072 C5 PUSH BC
\ 0073 018A01 LD BC,394
\ 0076 59 LD E,C
\ 0077 50 LD D,B
\ 0078 3E00 LD A,BYTE3 ui_err_msg
\ 007A 210000 LD HL,LWRD ui_err_msg
\ 007D CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 0080 F1 POP AF
59 g_reader_vars.location.disk = 'C';
\ 0081 3E43 LD A,67
\ 0083 320600 LD (g_reader_vars+6),A
60 //return RESULT_SD_OUT;
61 return RESULT_SD_OUT;
\ 0086 213600 LD HL,54
62 }
\ 0089 C3BB03 JP LWRD ?0056
\ 008C ?0010:
\ 008C ?0008:
63 }
64
65 if (result != 0)
\ 008C DDE5 PUSH IX
\ 008E E1 POP HL
\ 008F 7D LD A,L
\ 0090 B4 OR H
\ 0091 C2B803 JP NZ,?0033
\ 0094 ?0011:
66 return result;
\ 0094 ?0012:
67
68 BankSwitch((unsigned long)FSELInit >> 16);
\ 0094 1E00 LD E,BYTE3 fselInit
\ 0096 CD0000 CALL LWRD BankSwitch
69 fselGetLocation(& g_reader_vars.location);
\ 0099 CDC503 CALL LWRD ?0087
70
71 if(!g_card_ok)
\ 009C 68 LD L,B
\ 009D 60 LD H,B
\ 009E 39 ADD HL,SP
\ 009F AF XOR A
\ 00A0 B6 OR (HL)
\ 00A1 ED5B0400 LD DE,(list+4)
\ 00A5 C2D101 JP NZ,?0014
\ 00A8 ?0013:
72 {
73 switch (list.active)
\ 00A8 CD0000 CALL LWRD ?S_S_SWITCH_L06
\ 00AB 0000 DEFW 0
\ 00AD 0400 DEFW 4
\ 00AF B403 DEFW ?0055
\ 00B1 B900 DEFW ?0016
\ 00B3 FD00 DEFW ?0019
\ 00B5 8D01 DEFW ?0026
\ 00B7 AC01 DEFW ?0029
\ 00B9 ?0016:
74 {
75 case 0:
76 if (g_reader_vars.location.disk == 'H')
\ 00B9 3A0600 LD A,(g_reader_vars+6)
\ 00BC FE48 CP 72
\ 00BE 201E JR NZ,?0018
\ 00C0 ?0017:
77 {
78 g_reader_vars.location.disk = 'C';
\ 00C0 3E43 LD A,67
\ 00C2 320600 LD (g_reader_vars+6),A
79 FSELInit(FSEL_TYPE_TXT, FSEL_ALL_REPEATALL,FSEL_TYPE_COMMONDIR, g_reader_vars.location.disk);
\ 00C5 4F LD C,A
\ 00C6 C5 PUSH BC
\ 00C7 48 LD C,B
\ 00C8 C5 PUSH BC
\ 00C9 0E04 LD C,4
\ 00CB 59 LD E,C
\ 00CC 3E00 LD A,BYTE3 fselInit
\ 00CE 210000 LD HL,LWRD fselInit
\ 00D1 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 00D4 F1 POP AF
\ 00D5 F1 POP AF
80 fselGetLocation(& g_reader_vars.location);
\ 00D6 CDC503 CALL LWRD ?0087
81 need_sel_file=TRUE;
\ 00D9 3E01 LD A,1
\ 00DB 320000 LD (need_sel_file),A
\ 00DE ?0018:
82 }
83 BankSwitch((unsigned long)DecodeOnePage >> 16);
\ 00DE 0600 LD B,0
\ 00E0 1E00 LD E,BYTE3 DecodeOnePage
\ 00E2 CD0000 CALL LWRD BankSwitch
84 result=ui_directory(&g_reader_vars.location, FSEL_TYPE_TXT, g_comval.langid);
\ 00E5 210C00 LD HL,g_comval+12
\ 00E8 4E LD C,(HL)
\ 00E9 C5 PUSH BC
\ 00EA CDD003 CALL LWRD ?0088
\ 00ED F1 POP AF
85 FSELSetMode(FSEL_ALL_SEQUENCE);
\ 00EE CDDD03 CALL LWRD ?0089
86 BankSwitch((unsigned long)LoadData >> 16);
\ 00F1 1E00 LD E,BYTE3 LoadData
\ 00F3 CD0000 CALL LWRD BankSwitch
87
88 g_menu_active = FALSE;
\ 00F6 AF XOR A
\ 00F7 320000 LD (g_menu_active),A
89 g_reader_vars.g_txt.PrevSeek=0;
\ 00FA C37503 JP LWRD ?0051
90 g_reader_vars.g_txt.CurrentSeek=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -