📄 ui_play.lst
字号:
\ 00E3 2A3500 LD HL,(g_reader_vars+53)
\ 00E6 ED4B3D00 LD BC,(g_reader_vars+61)
\ 00EA ED42 SBC HL,BC
\ 00EC 4D LD C,L
\ 00ED 44 LD B,H
\ 00EE EB EX DE,HL
89 // if(g_reader_vars.g_txt.BufSector!=(g_reader_vars.g_txt.SectorTotal-1))
90 if(FileLengthLeft>0)
\ 00EF DD36E805 LD (IX-24),5
\ 00F3 DD36E900 LD (IX-23),0
\ 00F7 DD36EB01 LD (IX-21),1
\ 00FB DD36F000 LD (IX-16),0
\ 00FF C5 PUSH BC
\ 0100 E5 PUSH HL
\ 0101 010000 LD BC,0
\ 0104 69 LD L,C
\ 0105 60 LD H,B
\ 0106 CD0000 CALL LWRD ?SL_CMP_L03
\ 0109 3004 JR NC,?0006
\ 010B ?0005:
91 bPageDownFlag = TRUE;
\ 010B DD36F001 LD (IX-16),1
\ 010F ?0006:
92 if(g_reader_vars.playflag)
\ 010F 3A0200 LD A,(g_reader_vars+2)
\ 0112 B7 OR A
\ 0113 2814 JR Z,?0008
\ 0115 ?0007:
93 {
94 FlagAutoPlay = TRUE;
95 AutoPlayTimeSet = g_reader_vars.autoplaytime;
\ 0115 ED4B0300 LD BC,(g_reader_vars+3)
\ 0119 44 LD B,H
\ 011A DD71E8 LD (IX-24),C
\ 011D DD70E9 LD (IX-23),B
96 AutoPlayTime=AutoPlayTimeSet*2;
\ 0120 69 LD L,C
\ 0121 60 LD H,B
\ 0122 29 ADD HL,HL
\ 0123 DD75E6 LD (IX-26),L
\ 0126 DD74E7 LD (IX-25),H
\ 0129 ?0008:
\ 0129 ?0010:
97 }
98
99 while( 1 )
100 {
101 DC oldDC_sav;
102 if( bRedraw )
\ 0129 AF XOR A
\ 012A DDB6EB OR (IX-21)
\ 012D 2818 JR Z,?0013
\ 012F ?0012:
103 {
104 nDrawRow = view_page_down(&g_reader_vars.g_txt, FALSE,NULL ); // 显示一屏
\ 012F 210000 LD HL,0
\ 0132 E5 PUSH HL
\ 0133 4C LD C,H
\ 0134 113100 LD DE,g_reader_vars+49
\ 0137 3E00 LD A,BYTE3 view_page_down
\ 0139 210000 LD HL,LWRD view_page_down
\ 013C CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 013F F1 POP AF
\ 0140 DD75EC LD (IX-20),L
105 bRedraw = FALSE;
\ 0143 DD36EB00 LD (IX-21),0
\ 0147 ?0013:
106 }
107 GetDCStatus(&oldDC_sav);
\ 0147 210F00 LD HL,15
\ 014A 39 ADD HL,SP
\ 014B EB EX DE,HL
\ 014C CD0000 CALL LWRD GetDCStatus
108 key = ap_get_message();
\ 014F CD0000 CALL LWRD ap_get_message
109
110 switch( key )
\ 0152 5F LD E,A
\ 0153 CD0000 CALL LWRD ?C_V_SWITCH_L06
\ 0156 0900 DEFW 9
\ 0158 05 DEFB 5
\ 0159 06 DEFB 6
\ 015A 1C DEFB 28
\ 015B 21 DEFB 33
\ 015C 30 DEFB 48
\ 015D 37 DEFB 55
\ 015E 45 DEFB 69
\ 015F 46 DEFB 70
\ 0160 80 DEFB 128
\ 0161 F702 DEFW ?0068
\ 0163 B201 DEFW ?0019
\ 0165 EC01 DEFW ?0026
\ 0167 6C02 DEFW ?0046
\ 0169 9602 DEFW ?0052
\ 016B CB02 DEFW ?0058
\ 016D 7501 DEFW ?0015
\ 016F B201 DEFW ?0019
\ 0171 EC01 DEFW ?0026
\ 0173 6C02 DEFW ?0046
\ 0175 ?0015:
111 {
112 case AP_KEY_PLAY | AP_KEY_UP:
113 {
114 FileLengthLeft= g_reader_vars.g_txt.FileLengthBytes - g_reader_vars.g_txt.CurrentSeek;
\ 0175 A7 AND A
\ 0176 2A3300 LD HL,(g_reader_vars+51)
\ 0179 ED4B3B00 LD BC,(g_reader_vars+59)
\ 017D ED42 SBC HL,BC
\ 017F EB EX DE,HL
\ 0180 2A3500 LD HL,(g_reader_vars+53)
\ 0183 ED4B3D00 LD BC,(g_reader_vars+61)
\ 0187 ED42 SBC HL,BC
\ 0189 4D LD C,L
\ 018A 44 LD B,H
\ 018B EB EX DE,HL
115 if(FileLengthLeft<=0)
\ 018C C5 PUSH BC
\ 018D E5 PUSH HL
\ 018E 010000 LD BC,0
\ 0191 69 LD L,C
\ 0192 60 LD H,B
\ 0193 CD0000 CALL LWRD ?SL_CMP_L03
\ 0196 3814 JR C,?0017
\ 0198 ?0016:
116 {
117 g_reader_vars.g_txt.PrevSeek=0;
\ 0198 223700 LD (g_reader_vars+55),HL
\ 019B ED433900 LD (g_reader_vars+57),BC
118 g_reader_vars.g_txt.CurrentSeek=0;
\ 019F 223B00 LD (g_reader_vars+59),HL
\ 01A2 ED433D00 LD (g_reader_vars+61),BC
119 g_reader_vars.g_txt.BufSector=0;
\ 01A6 223F00 LD (g_reader_vars+63),HL
120 }
121 else
\ 01A9 C3BC02 JP LWRD ?0082
\ 01AC ?0017:
122 {
123 ToPrevScreenPosition(&g_reader_vars.g_txt); //回上一屏
\ 01AC CD7703 CALL LWRD ?0084
\ 01AF ?0018:
124 }
125 return 0;
\ 01AF C3BC02 JP LWRD ?0082
126 }
\ 01B2 ?0019:
127 case MSG_RTC2HZ: //rtc
128 case AP_MSG_RTC:
129 if(!g_reader_vars.playflag) break;
\ 01B2 3A0200 LD A,(g_reader_vars+2)
\ 01B5 B7 OR A
\ 01B6 CA5703 JP Z,?0073
\ 01B9 ?0020:
\ 01B9 ?0021:
130 if( AutoPlayTimeSet == 0 ) break;
\ 01B9 DD7EE8 LD A,(IX-24)
\ 01BC DDB6E9 OR (IX-23)
\ 01BF CA5703 JP Z,?0073
\ 01C2 ?0022:
\ 01C2 ?0023:
131 ap_message_init(NULL); // 清除屏保
\ 01C2 110000 LD DE,0
\ 01C5 3E00 LD A,BYTE3 ap_message_init
\ 01C7 210000 LD HL,LWRD ap_message_init
\ 01CA CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
132 if( -- AutoPlayTime != 0 )
\ 01CD DD6EE6 LD L,(IX-26)
\ 01D0 DD66E7 LD H,(IX-25)
\ 01D3 2B DEC HL
\ 01D4 DD75E6 LD (IX-26),L
\ 01D7 DD74E7 LD (IX-25),H
\ 01DA 7D LD A,L
\ 01DB B4 OR H
\ 01DC C25703 JP NZ,?0073
\ 01DF ?0024:
133 break;
\ 01DF ?0025:
134 AutoPlayTime=AutoPlayTimeSet*2;
\ 01DF DD6EE8 LD L,(IX-24)
\ 01E2 DD66E9 LD H,(IX-23)
\ 01E5 29 ADD HL,HL
\ 01E6 DD75E6 LD (IX-26),L
\ 01E9 DD74E7 LD (IX-25),H
\ 01EC ?0026:
135 //跳至AP_KEY_NEXT处理
136 case AP_KEY_NEXT:
137 case AP_KEY_NEXT| AP_KEY_HOLD:
138 // 先试翻屏, 如果到结尾, 回到先前位置, 用于RESULT_REDRAW的消息重画
139 if( SCR_ROW == nDrawRow && bPageDownFlag)
\ 01EC DD7EEC LD A,(IX-20)
\ 01EF FE07 CP 7
\ 01F1 2052 JR NZ,?0028
\ 01F3 AF XOR A
\ 01F4 DDB6F0 OR (IX-16)
\ 01F7 284C JR Z,?0028
\ 01F9 ?0030:
\ 01F9 ?0029:
\ 01F9 ?0027:
140 {
141 byte ret_page, Next_page;
142 ret_page = view_page_down(&g_reader_vars.g_txt, 1,NULL);
\ 01F9 210000 LD HL,0
\ 01FC E5 PUSH HL
\ 01FD 0E01 LD C,1
\ 01FF 113100 LD DE,g_reader_vars+49
\ 0202 3E00 LD A,BYTE3 view_page_down
\ 0204 210000 LD HL,LWRD view_page_down
\ 0207 CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 020A F1 POP AF
\ 020B DD75FD LD (IX-3),L
143 if(0xff != ret_page)
\ 020E 2C INC L
\ 020F 282F JR Z,?0038
\ 0211 ?0031:
144 {
145 bRedraw = TRUE;
\ 0211 DD36EB01 LD (IX-21),1
146 // nCurPage++;
147
148 if(ret_page == SCR_ROW)
\ 0215 DD7EFD LD A,(IX-3)
\ 0218 FE07 CP 7
\ 021A 2020 JR NZ,?0034
\ 021C ?0033:
149 {
150 Next_page = view_page_down(&g_reader_vars.g_txt, 2,NULL);
\ 021C 210000 LD HL,0
\ 021F E5 PUSH HL
\ 0220 0E02 LD C,2
\ 0222 113100 LD DE,g_reader_vars+49
\ 0225 3E00 LD A,BYTE3 view_page_down
\ 0227 210000 LD HL,LWRD view_page_down
\ 022A CD0000 CALL LWRD ?BANK_CALL_DIRECT_L08
\ 022D F1 POP AF
151 if(Next_page != 0xff)
\ 022E 2C INC L
\ 022F 2806 JR Z,?0036
\ 0231 ?0035:
152 {
153 bPageDownFlag = TRUE;
\ 0231 DD36F001 LD (IX-16),1
154 }
155 else
\ 0235 1809 JR ?0038
\ 0237 ?0036:
156 bPageDownFlag = FALSE;
\ 0237 DD75F0 LD (IX-16),L
\ 023A ?0037:
157 }
158 else
\ 023A 1804 JR ?0038
\ 023C ?0034:
159 bPageDownFlag = FALSE;
\ 023C DD36F000 LD (IX-16),0
\ 0240 ?0038:
\ 0240 ?0032:
160
161
162 }
163 ToPrevScreenPosition(&g_reader_vars.g_txt); // 返回前一屏的位置
\ 0240 CD7703 CALL LWRD ?0084
164 }
165 else
\ 0243 181E JR ?0039
\ 0245 ?0028:
166 {
167 g_reader_vars.g_txt.PrevSeek=0;
\ 0245 010000 LD BC,0
\ 0248 69 LD L,C
\ 0249 60 LD H,B
\ 024A 223700 LD (g_reader_vars+55),HL
\ 024D ED433900 LD (g_reader_vars+57),BC
168 g_reader_vars.g_txt.CurrentSeek=0;
\ 0251 223B00 LD (g_reader_vars+59),HL
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -