⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 bookmark_menu.s01

📁 炬力方案176*132软件源码,适用于AK1025
💻 S01
字号:
	NAME	bookmark_menu(17)
	RSEG	CODE_1(0)
	RSEG	IDATA0(0)
	RSEG	CDATA0(0)
	EXTERN	add_bookmark
	PUBLIC	bookmark_op
	EXTERN	close_bookmark
	EXTERN	del_bookmark_id
	EXTERN	g_comval
	EXTERN	g_reader_vars
	EXTERN	get_bookmark
	EXTERN	get_num_bookmarks
	EXTERN	init_bookmark
	EXTERN	list
	PUBLIC	menuStr
	EXTERN	sub_list
	EXTERN	ui_bookmark_list
	EXTERN	ui_err_msg
	EXTERN	ui_popup_list
	EXTERN	?CLZ80B_4_04_L00
	EXTERN	?BANK_CALL_DIRECT_L08
	EXTERN	?BANK_FAST_LEAVE_L08
	RSEG	CODE_1
bookmark_op:
; 1.	#include "actos.h"
; 2.	#include "ap_common.h"
; 3.	#include "display.h"
; 4.	#include "ap_reader.h"
; 5.	#include "bookmark.h"
; 6.	
; 7.	WORD  menuStr[4]={MEB2,MEB4,MEB3,MSTOP5};
; 8.	extern pop_up_list_t list;
; 9.	extern pop_up_list_t sub_list;
; 10.	#pragma codeseg(CODE_1)              
; 11.	
; 12.	int bookmark_op(void)                // interface to call
; 13.	{
	PUSH	BC
	PUSH	DE
	PUSH	IY
	PUSH	IX
	LD	IX,0
	ADD	IX,SP
	LD	HL,65498
	ADD	HL,SP
	LD	SP,HL
; 14.	    int result,active; 
; 15.	    byte i;                                                                                 
; 16.	//    pop_up_list_t list;  
; 17.	//    function_menu_t  Menu;      // bookmark op menu     
; 18.	    list.headid = PLAYMENU;                                                                                                      
	LD	HL,416
	LD	(list+6),HL
; 19.	    list.total  = 4;                                                                                        
	LD	HL,4
	LD	(list+2),HL
; 20.	    list.active = 0;                                                                                       
	LD	L,H
	LD	(list+4),HL
; 21.	    list.strid  = menuStr;                                                                                
	LD	HL,menuStr
	LD	(list),HL
; 22.	    list.string_id = g_comval.langid;                                                                                                                                                                        
	LD	A,(g_comval+12)
	LD	(list+8),A
; 23.	    result = ui_popup_list(&list, NULL);                                                                         
	LD	C,0
	PUSH	BC
	LD	L,C
	LD	H,C
	PUSH	HL
	LD	DE,list
	LD	A,BYTE3 ui_popup_list
	LD	HL,LWRD ui_popup_list
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
	POP	AF
	PUSH	HL
	POP	IY
; 24.	    if (result != 0)
	LD	A,L
	OR	H
	JP	NZ,?0038
?0002:
; 25.	       return result;   
?0003:
; 26.	    if(list.active == 3)    // return straightly
	LD	HL,(list+4)
	LD	A,3
	XOR	L
	OR	H
	JP	Z,?0031
?0004:
; 27.	        return RESULT_IGNORE; 
?0005:
; 28.	        
; 29.	    /* we need to init bookmark data and prepare for op */
; 30.	    if( init_bookmark() )
	LD	A,BYTE3 init_bookmark
	LD	HL,LWRD init_bookmark
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	INC	L
	DEC	L
	JR	Z,?0007
?0006:
; 31.	    {
; 32.	        // FIXME: please change to open bookmark error
; 33.	        ui_err_msg(EBOKMSG2,EBOKMSG2,g_comval.langid);
	LD	BC,(g_comval+12)
	LD	B,0
	PUSH	BC
	CALL	LWRD ?0044
	POP	AF
?0007:
; 34.	    }
; 35.	   
; 36.	    i = get_num_bookmarks();    // get bookmarks number
	LD	A,BYTE3 get_num_bookmarks
	LD	HL,LWRD get_num_bookmarks
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	(IX-34),L
; 37.	
; 38.	    if(list.active == 0 )
	LD	HL,(list+4)
	LD	A,L
	OR	H
	JP	NZ,?0009
?0008:
; 39.	    {
; 40.	        /* select bookmark and view content according bookmark */
; 41.	        if( i == 0 ) 
	OR	(IX-34)
	JR	NZ,?0011
?0010:
; 42.	        { 
; 43.	           ui_err_msg(EBOKMSG2,EBOKMSG2,g_comval.langid);
	LD	BC,(g_comval+12)
	LD	B,A
	PUSH	BC
	CALL	LWRD ?0044
	POP	AF
; 44.	           close_bookmark();     
	JP	LWRD ?0043
; 45.	           return RESULT_IGNORE; 
; 46.	        }
?0011:
; 47.	        else
; 48.	        {
; 49.	            bkmark_node tmp;            
; 50.	            // FIXME:
; 51.	            //list.strid  = play_text;                                                                              
; 52.	            sub_list.total  = i;                                                                                      
	LD	C,A
	LD	B,0
	LD	(sub_list+2),BC
; 53.	            sub_list.active = 0;                                                                
	LD	L,B
	LD	H,B
	LD	(sub_list+4),HL
; 54.	            sub_list.string_id = g_comval.langid;                                                                    
	LD	A,(g_comval+12)
	LD	(sub_list+8),A
; 55.	            sub_list.headid = menuStr[list.active];                                                                
	LD	HL,(list+4)
	ADD	HL,HL
	LD	BC,menuStr
	ADD	HL,BC
	LD	B,(HL)
	INC	HL
	LD	H,(HL)
	LD	L,B
	LD	(sub_list+6),HL
; 56.	            result = ui_bookmark_list(&sub_list, NULL); 
	LD	C,0
	PUSH	BC
	LD	L,C
	LD	H,C
	PUSH	HL
	LD	DE,sub_list
	LD	A,BYTE3 ui_bookmark_list
	LD	HL,LWRD ui_bookmark_list
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
	POP	AF
	PUSH	HL
	POP	IY
; 57.	            
; 58.	            if( result != 0 )
	LD	A,L
	OR	H
	JP	NZ,?0039
?0012:
; 59.	            {  
; 60.	                close_bookmark();
; 61.	                return result;
; 62.	            }
?0013:
; 63.	            
; 64.	            active = sub_list.active;
	LD	HL,(sub_list+4)
	LD	(IX-36),L
; 65.	            if( active >= MAX_BKMARK_NUM )
	LD	BC,32784
	LD	A,B
	XOR	H
	LD	H,A
	SBC	HL,BC
	JP	NC,?0043
?0014:
; 66.	            { 
; 67.	                close_bookmark();
; 68.	                return RESULT_IGNORE;
; 69.	            }
?0015:
; 70.	            
; 71.	            /* jump to offset of the bookmark */
; 72.	            tmp =  get_bookmark(active);
	LD	HL,5
	ADD	HL,SP
	PUSH	HL
	LD	C,(IX-36)
	LD	HL,23
	ADD	HL,SP
	EX	DE,HL
	LD	A,BYTE3 get_bookmark
	LD	HL,LWRD get_bookmark
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	DE
	LD	BC,16
	LDIR
; 73.	            g_reader_vars.g_txt.CurrentSeek = tmp.offset;   
	LD	C,(IX-31)
	LD	B,(IX-30)
	LD	L,(IX-33)
	LD	H,(IX-32)
	LD	(g_reader_vars+59),HL
	LD	(g_reader_vars+61),BC
	JP	LWRD ?0029
?0009:
; 74.	            // FIXME:
; 75.	            // reload content and display
; 76.	        }
; 77.	    }                                                               
; 78.	    else if(list.active == 1)                                                                              
	LD	A,1
	XOR	L
	OR	H
	JP	NZ,?0019
?0018:
; 79.	    {   
; 80.	        /* del bookmark */                                                                                                 
; 81.	        if( i == 0 ) 
	OR	(IX-34)
	JR	NZ,?0021
?0020:
; 82.	        { 
; 83.	            // No bookmark at current
; 84.	            ui_err_msg(EBOKMSG2,EBOKMSG2,g_comval.langid);
	LD	BC,(g_comval+12)
	LD	B,A
	PUSH	BC
	CALL	LWRD ?0044
	POP	AF
; 85.	        }
; 86.	        else
	JP	LWRD ?0029
?0021:
; 87.	        {
; 88.	            // FIXME:
; 89.	            //list.strid  = play_text;                                                                              
; 90.	            sub_list.total  = i;                                                                                      
	LD	C,A
	LD	B,0
	LD	(sub_list+2),BC
; 91.	            sub_list.active = 0;                                                                
	LD	L,B
	LD	H,B
	LD	(sub_list+4),HL
; 92.	            sub_list.string_id = g_comval.langid;                                                                    
	LD	A,(g_comval+12)
	LD	(sub_list+8),A
; 93.	            sub_list.headid    = menuStr[list.active];                                                                
	LD	HL,(list+4)
	ADD	HL,HL
	LD	BC,menuStr
	ADD	HL,BC
	LD	B,(HL)
	INC	HL
	LD	H,(HL)
	LD	L,B
	LD	(sub_list+6),HL
; 94.	            result = ui_bookmark_list(&sub_list, NULL); 
	LD	C,0
	PUSH	BC
	LD	L,C
	LD	H,C
	PUSH	HL
	LD	DE,sub_list
	LD	A,BYTE3 ui_bookmark_list
	LD	HL,LWRD ui_bookmark_list
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
	POP	AF
	PUSH	HL
	POP	IY
; 95.	            
; 96.	            if( result != 0 )
	LD	A,L
	OR	H
	JR	Z,?0024
?0023:
; 97.	            {  
; 98.	                close_bookmark();
?0039:
	LD	A,BYTE3 close_bookmark
	LD	HL,LWRD close_bookmark
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 99.	                return result;
?0038:
	PUSH	IY
	POP	HL
; 100.	            }
	JP	LWRD ?0032
?0024:
; 101.	            
; 102.	            active = sub_list.active;
	LD	HL,(sub_list+4)
	LD	(IX-36),L
; 103.	            if( active >= MAX_BKMARK_NUM )
	LD	BC,32784
	LD	A,B
	XOR	H
	LD	H,A
	SBC	HL,BC
	JR	C,?0026
?0025:
; 104.	            { 
; 105.	                close_bookmark();
?0043:
	LD	A,BYTE3 close_bookmark
	LD	HL,LWRD close_bookmark
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 106.	                return RESULT_IGNORE;
	JP	LWRD ?0031
; 107.	            }
	JP	LWRD ?0032
?0026:
; 108.	                
; 109.	            /* del the bookmark */
; 110.	            del_bookmark_id(active);
	LD	E,(IX-36)
	LD	A,BYTE3 del_bookmark_id
	LD	HL,LWRD del_bookmark_id
	CALL	LWRD ?BANK_CALL_DIRECT_L08
?0022:
	JR	?0029
?0019:
; 111.	            // FIXME:
; 112.	            // reload content and display bookmark list
; 113.	        } 
; 114.	    }
; 115.	    else if(list.active == 2)                                                                              
	LD	A,2
	XOR	L
	OR	H
	JR	NZ,?0029
?0028:
; 116.	    {   
; 117.	        /* insert bookmark */                                                                                                 
; 118.	        /* add the bookmark */
; 119.	        long CurrentLen_bak,PrevLen_bak;
; 120.	        CurrentLen_bak=g_reader_vars.g_txt.CurrentSeek;         
	LD	HL,g_reader_vars+59
	LD	E,(HL)
	INC	HL
	LD	D,(HL)
	INC	HL
	LD	C,(HL)
	INC	HL
	LD	B,(HL)
	EX	DE,HL
	LD	(IX-33),L
	LD	(IX-32),H
	LD	(IX-31),C
	LD	(IX-30),B
; 121.	        PrevLen_bak=g_reader_vars.g_txt.PrevSeek;    
	LD	HL,g_reader_vars+55
	LD	E,(HL)
	INC	HL
	LD	D,(HL)
	INC	HL
	LD	C,(HL)
	INC	HL
	LD	B,(HL)
	EX	DE,HL
	LD	(IX-29),L
	LD	(IX-28),H
	LD	(IX-27),C
	LD	(IX-26),B
; 122.	/*  
; 123.	        if(g_reader_vars.g_txt.BufSector==0&&g_reader_vars.g_txt.PrevSeek==0) //第一屏     
; 124.	        {
; 125.	         g_reader_vars.g_txt.CurrentSeek=0;
; 126.	        }                                  
; 127.	        else
; 128.	        { 
; 129.	         view_page_up(&g_reader_vars.g_txt,NULL);
; 130.	         view_page_down(&g_reader_vars.g_txt, 1,NULL ); // 读当前屏到buffer,计算当前屏     
; 131.	*/
; 132.	         g_reader_vars.g_txt.CurrentSeek=g_reader_vars.g_txt.PrevSeek;        //取当前屏第一行的位置    
	LD	HL,g_reader_vars+55
	LD	E,(HL)
	INC	HL
	LD	D,(HL)
	EX	DE,HL
	LD	(g_reader_vars+59),HL
	LD	(g_reader_vars+61),BC
; 133.	         add_bookmark(&g_reader_vars.g_txt, NULL, 0xFFFFFFFF);
	LD	HL,65535
	PUSH	HL
	PUSH	HL
	LD	C,A
	LD	B,A
	LD	DE,g_reader_vars+49
	LD	A,BYTE3 add_bookmark
	LD	HL,LWRD add_bookmark
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
	POP	AF
; 134.	         g_reader_vars.g_txt.CurrentSeek=CurrentLen_bak;
	LD	C,(IX-31)
	LD	B,(IX-30)
	LD	L,(IX-33)
	LD	H,(IX-32)
	LD	(g_reader_vars+59),HL
	LD	(g_reader_vars+61),BC
; 135.	         g_reader_vars.g_txt.PrevSeek=PrevLen_bak;
	LD	C,(IX-27)
	LD	B,(IX-26)
	LD	L,(IX-29)
	LD	H,(IX-28)
	LD	(g_reader_vars+55),HL
	LD	(g_reader_vars+57),BC
?0029:
?0027:
?0017:
; 136.	//       }
; 137.	        // FIXME:
; 138.	        // reload content and display bookmark list
; 139.	    }
; 140.	    
; 141.	    close_bookmark();   
	LD	A,BYTE3 close_bookmark
	LD	HL,LWRD close_bookmark
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 142.	    if(list.active == 0)
	LD	HL,(list+4)
	LD	A,L
	OR	H
	JR	NZ,?0031
?0030:
; 143.	    return 0;
	LD	L,A
	LD	H,A
; 144.	    else 
	JR	?0032
?0031:
; 145.	    return     RESULT_IGNORE;
	LD	HL,52
; 146.	}                                                                                               
?0032:
	LD	SP,IX
	POP	IX
	POP	IY
	POP	DE
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
?0044:
	LD	BC,426
	LD	E,C
	LD	D,B
	LD	A,BYTE3 ui_err_msg
	LD	HL,LWRD ui_err_msg
	JP	LWRD ?BANK_CALL_DIRECT_L08
; 147.	
; 148.	#pragma function = default
	RSEG	IDATA0
menuStr:
	DEFS	8
	RSEG	CDATA0
	DEFW	422
	DEFW	424
	DEFW	423
	DEFW	465
	END

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -