📄 ui_play.s01
字号:
?0019:
; 127. case MSG_RTC2HZ: //rtc
; 128. case AP_MSG_RTC:
; 129. if(!g_reader_vars.playflag) break;
LD A,(g_reader_vars+2)
OR A
JP Z,?0073
?0020:
?0021:
; 130. if( AutoPlayTimeSet == 0 ) break;
LD A,(IX-24)
OR (IX-23)
JP Z,?0073
?0022:
?0023:
; 131. ap_message_init(NULL); // 清除屏保
LD DE,0
LD A,BYTE3 ap_message_init
LD HL,LWRD ap_message_init
CALL LWRD ?BANK_CALL_DIRECT_L08
; 132. if( -- AutoPlayTime != 0 )
LD L,(IX-26)
LD H,(IX-25)
DEC HL
LD (IX-26),L
LD (IX-25),H
LD A,L
OR H
JP NZ,?0073
?0024:
; 133. break;
?0025:
; 134. AutoPlayTime=AutoPlayTimeSet*2;
LD L,(IX-24)
LD H,(IX-23)
ADD HL,HL
LD (IX-26),L
LD (IX-25),H
?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)
LD A,(IX-20)
CP 7
JR NZ,?0028
XOR A
OR (IX-16)
JR Z,?0028
?0030:
?0029:
?0027:
; 140. {
; 141. byte ret_page, Next_page;
; 142. ret_page = view_page_down(&g_reader_vars.g_txt, 1,NULL);
LD HL,0
PUSH HL
LD C,1
LD DE,g_reader_vars+49
LD A,BYTE3 view_page_down
LD HL,LWRD view_page_down
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
LD (IX-3),L
; 143. if(0xff != ret_page)
INC L
JR Z,?0038
?0031:
; 144. {
; 145. bRedraw = TRUE;
LD (IX-21),1
; 146. // nCurPage++;
; 147.
; 148. if(ret_page == SCR_ROW)
LD A,(IX-3)
CP 7
JR NZ,?0034
?0033:
; 149. {
; 150. Next_page = view_page_down(&g_reader_vars.g_txt, 2,NULL);
LD HL,0
PUSH HL
LD C,2
LD DE,g_reader_vars+49
LD A,BYTE3 view_page_down
LD HL,LWRD view_page_down
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
; 151. if(Next_page != 0xff)
INC L
JR Z,?0036
?0035:
; 152. {
; 153. bPageDownFlag = TRUE;
LD (IX-16),1
; 154. }
; 155. else
JR ?0038
?0036:
; 156. bPageDownFlag = FALSE;
LD (IX-16),L
?0037:
; 157. }
; 158. else
JR ?0038
?0034:
; 159. bPageDownFlag = FALSE;
LD (IX-16),0
?0038:
?0032:
; 160.
; 161.
; 162. }
; 163. ToPrevScreenPosition(&g_reader_vars.g_txt); // 返回前一屏的位置
CALL LWRD ?0084
; 164. }
; 165. else
JR ?0039
?0028:
; 166. {
; 167. g_reader_vars.g_txt.PrevSeek=0;
LD BC,0
LD L,C
LD H,B
LD (g_reader_vars+55),HL
LD (g_reader_vars+57),BC
; 168. g_reader_vars.g_txt.CurrentSeek=0;
LD (g_reader_vars+59),HL
LD (g_reader_vars+61),BC
; 169. g_reader_vars.g_txt.BufSector=0;
LD (g_reader_vars+63),HL
?0041:
; 170. while(ap_get_message() != 0);
CALL LWRD ap_get_message
OR A
JR Z,?0082
?0042:
JR ?0041
?0040:
; 171. return 0;
; 172. }
?0039:
?0044:
; 173. while(ap_get_message() != 0);
CALL LWRD ap_get_message
OR A
JP Z,?0073
?0045:
; 174. break;
JR ?0039
?0043:
?0046:
; 175. case AP_KEY_PREV:
; 176. case AP_KEY_PREV| AP_KEY_HOLD:
; 177. {
; 178. bRedraw = ( 0 != view_page_up(&g_reader_vars.g_txt,NULL) );
LD BC,0
LD DE,g_reader_vars+49
LD A,BYTE3 view_page_up
LD HL,LWRD view_page_up
CALL LWRD ?BANK_CALL_DIRECT_L08
INC L
DEC L
JR Z,?0079
LD A,1
JR ?0080
?0079:
XOR A
?0080:
LD (IX-21),A
; 179. if(bRedraw)
OR A
JR Z,?0048
?0047:
; 180. {
; 181. bPageDownFlag = TRUE;
LD (IX-16),1
?0048:
?0050:
; 182. }
; 183. }
; 184. while(ap_get_message() != 0);
CALL LWRD ap_get_message
OR A
JP Z,?0073
?0051:
; 185. break;
JR ?0048
?0049:
?0052:
; 186. case AP_MSG_SD_OUT:
; 187. if (g_reader_vars.location.disk == 'H')
LD A,(g_reader_vars+6)
CP 72
JR NZ,?0054
?0053:
; 188. {
; 189. g_reader_vars.location.disk = 'C';
LD A,67
LD (g_reader_vars+6),A
; 190. ui_err_msg(CARDPULL,CARDPULL,g_comval.langid);//显示卡拔出
LD BC,(g_comval+12)
LD B,0
PUSH BC
LD BC,394
LD E,C
LD D,B
LD A,BYTE3 ui_err_msg
LD HL,LWRD ui_err_msg
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
; 191. need_sel_file=TRUE;
LD A,1
LD (need_sel_file),A
; 192. return 0;
?0082:
LD HL,0
; 193. }
JP LWRD ?0077
?0054:
?0056:
; 194. while(ap_get_message() != 0);
CALL LWRD ap_get_message
OR A
JP Z,?0073
?0057:
; 195. break;
JR ?0054
?0055:
?0058:
; 196.
; 197. case AP_KEY_MODE|AP_KEY_UP:
; 198. BankSwitch((unsigned long)LoadData >> 16);
LD E,BYTE3 LoadData
CALL LWRD BankSwitch
; 199. // ToPrevScreenPosition(&g_reader_vars.g_txt); //回上一屏
; 200. result=bookmark_op();
LD A,BYTE3 bookmark_op
LD HL,LWRD bookmark_op
CALL LWRD ?BANK_CALL_DIRECT_L08
; 201. if(result==0)
LD A,L
OR H
JR Z,?0083
?0059:
; 202. {
; 203. bRedraw = TRUE;
; 204. break;
?0060:
; 205.
; 206. }
; 207. if(result!=RESULT_IGNORE)
LD A,52
XOR L
OR H
JR NZ,?0077
?0061:
; 208. {
; 209. return result;
; 210. }
?0062:
; 211. if(result==RESULT_IGNORE)
LD A,52
XOR L
OR H
JR NZ,?0064
?0063:
; 212. ToPrevScreenPosition(&g_reader_vars.g_txt); //回上一屏
CALL LWRD ?0084
?0064:
; 213. bRedraw = TRUE; //重画
LD (IX-21),1
?0066:
; 214. while(ap_get_message() != 0);
CALL LWRD ap_get_message
OR A
JR Z,?0073
?0067:
; 215. break;
JR ?0066
?0065:
?0068:
; 216.
; 217. default:
; 218. key = ap_handle_hotkey( key );
CALL LWRD ap_handle_hotkey
LD (IX-17),A
; 219. if(key == RESULT_REDRAW)
CP 50
JR NZ,?0070
?0069:
; 220. {
; 221. ToPrevScreenPosition(&g_reader_vars.g_txt);
CALL LWRD ?0084
; 222. bRedraw = TRUE; //重画
?0083:
LD (IX-21),1
JR ?0073
?0070:
; 223. }
; 224. else if(key != 0)
XOR A
OR (IX-17)
JR Z,?0073
?0072:
; 225. {
; 226. FileLengthLeft= g_reader_vars.g_txt.FileLengthBytes - g_reader_vars.g_txt.CurrentSeek;
LD HL,(g_reader_vars+51)
LD BC,(g_reader_vars+59)
SBC HL,BC
EX DE,HL
LD HL,(g_reader_vars+53)
LD BC,(g_reader_vars+61)
SBC HL,BC
LD C,L
LD B,H
EX DE,HL
; 227. if(FileLengthLeft<=0)
PUSH BC
PUSH HL
LD BC,0
LD L,C
LD H,B
CALL LWRD ?SL_CMP_L03
JR C,?0075
?0074:
; 228. {
; 229. g_reader_vars.g_txt.PrevSeek=0;
LD (g_reader_vars+55),HL
LD (g_reader_vars+57),BC
; 230. g_reader_vars.g_txt.CurrentSeek=0;
LD (g_reader_vars+59),HL
LD (g_reader_vars+61),BC
; 231. g_reader_vars.g_txt.BufSector=0;
LD (g_reader_vars+63),HL
; 232. }
; 233. else
JR ?0076
?0075:
; 234. {
; 235. ToPrevScreenPosition(&g_reader_vars.g_txt); //回上一屏
CALL LWRD ?0084
?0076:
; 236. }
; 237.
; 238. return key;
LD L,(IX-17)
LD H,B
; 239. }
?0077:
LD SP,IX
POP IX
POP IY
POP DE
POP BC
JP LWRD ?BANK_FAST_LEAVE_L08
?0073:
?0071:
?0014:
; 240. }
; 241. //恢复保存设备状态
; 242. SetPenColor(oldDC_sav.PenColor);
LD C,(IX-9)
LD B,(IX-8)
LD E,(IX-11)
LD D,(IX-10)
CALL LWRD SetPenColor
; 243. SetBackgdColor(oldDC_sav.BackgdColor);
LD HL,19
ADD HL,SP
LD E,(HL)
INC HL
LD D,(HL)
INC HL
LD C,(HL)
INC HL
LD B,(HL)
CALL LWRD SetBackgdColor
; 244. }
; 245. }
JP LWRD ?0008
?0084:
LD DE,g_reader_vars+49
LD A,BYTE3 ToPrevScreenPosition
LD HL,LWRD ToPrevScreenPosition
JP LWRD ?BANK_CALL_DIRECT_L08
RSEG UDATA0
Stop_display:
DEFS 1
count_autoplay:
DEFS 1
Delaytime:
DEFS 1
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -