📄 bookmark_list.s01
字号:
NAME bookmark_list(17)
RSEG CODE_1(0)
EXTERN GetDCStatus
EXTERN PutS
EXTERN ResShowMultiString
EXTERN ResShowPic
EXTERN SetBackgdColor
EXTERN SetPenColor
EXTERN SetTextOutMode
EXTERN SetTextPos
EXTERN ap_get_message
EXTERN ap_handle_hotkey
EXTERN bkmarks
EXTERN menu_pos_list
EXTERN menulist_bck_pic
PUBLIC showString
PUBLIC show_active_bklist
EXTERN ui_auto_select
PUBLIC ui_bookmark_list
EXTERN ?CLZ80B_4_04_L00
EXTERN ?SS_DIV_L02
EXTERN ?SS_MOD_L02
EXTERN ?C_V_SWITCH_L06
EXTERN ?BANK_CALL_DIRECT_L08
EXTERN ?BANK_FAST_LEAVE_L08
RSEG CODE_1
showString:
; 1. /*
; 2. *******************************************************************************
; 3. * ACTOS AP
; 4. * ap common lib file
; 5. *
; 6. * (c) Copyright, Actions Co,Ld.
; 7. * All Right Reserved
; 8. *
; 9. *******************************************************************************
; 10. */
; 11. #include <stdio.h> // sprintf
; 12. #include "ap_common.h"
; 13. #include "common.h"
; 14. #include "bookmark.h"
; 15.
; 16. #define LIST_NUM_ONE_PAGE 6
; 17. extern const char menu_pos_list[6];
; 18. extern const WORD menulist_bck_pic[6];
; 19. /*const char menu_pos_bklist[LIST_NUM_ONE_PAGE] = { POSITION_MENU6,POSITION_MENU5,
; 20. POSITION_MENU4,POSITION_MENU3,POSITION_MENU2,POSITION_MENU1};
; 21. const WORD menulist_bck_pic1[LIST_NUM_ONE_PAGE]={ MENUBCK6,MENUBCK5,MENUBCK4,MENUBCK3,MENUBCK2,MENUBCK1 };
; 22. */
; 23. #pragma codeseg(CODE_1)
; 24. int showString(short id, byte string_id, uchar x, uchar y)
; 25. {
PUSH IX
LD IX,0
ADD IX,SP
PUSH BC
PUSH DE
LD HL,65522
ADD HL,SP
LD SP,HL
; 26. BYTE len;
; 27. char p[13];
; 28. // sprintf(p,"%d: %s",id, bkmarks[id].title);
; 29.
; 30. // len = (BYTE)strlen(p);
; 31. memcpy(p,bkmarks[id].title,12);
EX DE,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
ADD HL,HL
LD BC,bkmarks+4
ADD HL,BC
LD BC,12
LDIR
; 32. p[12]=0;
LD (IX-6),B
; 33. SetTextPos(x, y);
LD C,(IX+8)
LD E,(IX+6)
CALL LWRD SetTextPos
; 34. // SetPenColor(Color_BULE2_def);
; 35. PutS(p,-1);
LD C,255
LD HL,0
ADD HL,SP
EX DE,HL
CALL LWRD PutS
; 36. /*
; 37. if((x == 255)&&(string_id!=1)&&(string_id<5)) //16*16字体居中显示
; 38. {
; 39. SetTextPos((SCR_WIDTH - (BYTE)get_large_text_width(p)) /2, y);
; 40. PutS(p, -1);
; 41. }
; 42. else if((string_id!=1)&&(string_id<5)) ////16*16字体非居中显示
; 43. {
; 44. SetTextPos(x, y);
; 45. PutS(p, -1);
; 46. }
; 47. else //6*8字体显示
; 48. {
; 49. if(x == 255)
; 50. {
; 51. SetTextPos((SCR_WIDTH - len*CHAR_WIDTH) /2, y);
; 52. PutS(p, -1);
; 53. }
; 54. else if( len<22 )
; 55. {
; 56. SetTextPos(x, y);
; 57. PutS(p, -1);
; 58. }
; 59. else
; 60. {
; 61. SetTextPos(0, y);
; 62. PutS(p, 21);
; 63. SetTextPos(0, y+8);
; 64. PutS(p+21, -1);
; 65. }
; 66. }
; 67. */
; 68. return 1;
LD HL,1
; 69. }
LD SP,IX
POP IX
JP LWRD ?BANK_FAST_LEAVE_L08
show_active_bklist:
; 70.
; 71. void show_active_bklist(pop_up_list_t *list,int old_active, int active)
; 72. {
PUSH IY
PUSH IX
PUSH BC
PUSH DE
POP IY
; 73. int tmp;
; 74. //清除旧的活动菜单项
; 75. tmp = old_active%LIST_NUM_ONE_PAGE;
LD BC,6
LD L,B
LD H,B
ADD HL,SP
LD E,(HL)
INC HL
LD D,(HL)
CALL LWRD ?SS_MOD_L02
; 76.
; 77. ResShowPic(menulist_bck_pic[tmp], menu_ptr_x_def, menu_pos_list[tmp]-4);
LD HL,menu_pos_list
ADD HL,DE
LD A,(HL)
ADD A,252
LD C,A
PUSH BC
LD C,10
EX DE,HL
ADD HL,HL
LD DE,menulist_bck_pic
ADD HL,DE
LD E,(HL)
INC HL
LD D,(HL)
CALL LWRD ?0062
POP AF
; 78.
; 79. tmp = active%LIST_NUM_ONE_PAGE;
LD BC,6
LD HL,10
ADD HL,SP
LD E,(HL)
INC HL
LD D,(HL)
CALL LWRD ?SS_MOD_L02
PUSH DE
POP IX
; 80. ResShowPic(MENUBCK, menu_bck_x_def, menu_pos_list[tmp]-4);
LD HL,menu_pos_list
ADD HL,DE
LD A,(HL)
ADD A,252
LD C,A
PUSH BC
CALL LWRD ?0063
POP AF
; 81. ///-ResShowPic(MENURARR, menu_ptr_x_def, menu_pos_list[tmp]);
; 82. ResShowPic(DHT,194,8);
LD C,8
PUSH BC
LD C,194
LD DE,38
CALL LWRD ?0062
POP AF
; 83. ResShowPic(DHTHK,194, menu_pos_list[tmp]+6);
LD HL,menu_pos_list
PUSH IX
POP BC
ADD HL,BC
LD A,(HL)
ADD A,6
LD E,A
PUSH DE
LD C,194
LD DE,39
CALL LWRD ?0062
POP AF
; 84.
; 85. SetPenColor(Color_WHITE_def);
CALL LWRD ?0064
; 86. showString(active, list->string_id, menu_str_x_def, menu_pos_list[tmp]-3);
LD HL,menu_pos_list
PUSH IX
POP BC
ADD HL,BC
LD A,(HL)
ADD A,253
LD E,A
PUSH DE
LD E,32
PUSH DE
LD C,(IY+8)
LD HL,14
ADD HL,SP
LD E,(HL)
INC HL
LD D,(HL)
LD A,BYTE3 showString
LD HL,LWRD showString
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
POP AF
; 87.
; 88. //重新显示旧的活动菜单
; 89. SetPenColor(Color_WHITE_def);
CALL LWRD ?0064
; 90.
; 91. tmp = old_active%LIST_NUM_ONE_PAGE;
LD BC,6
LD L,B
LD H,B
ADD HL,SP
LD E,(HL)
INC HL
LD D,(HL)
CALL LWRD ?SS_MOD_L02
PUSH DE
POP IX
; 92. ResShowPic(MENUARR1+tmp, menu_ptr_x_def, menu_pos_list[tmp]);
LD HL,menu_pos_list
ADD HL,DE
LD C,(HL)
PUSH BC
LD C,10
LD HL,179
ADD HL,DE
EX DE,HL
CALL LWRD ?0062
POP AF
; 93. showString(old_active, list->string_id, menu_str_x_def, menu_pos_list[tmp]-3);
LD HL,menu_pos_list
PUSH IX
POP BC
ADD HL,BC
LD A,(HL)
ADD A,253
LD C,A
PUSH BC
LD C,32
PUSH BC
LD C,(IY+8)
LD HL,4
ADD HL,SP
LD E,(HL)
INC HL
LD D,(HL)
LD A,BYTE3 showString
LD HL,LWRD showString
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
POP AF
; 94. }
POP HL
POP IX
POP IY
JP LWRD ?BANK_FAST_LEAVE_L08
?0063:
LD C,9
LD DE,180
?0062:
LD A,BYTE3 ResShowPic
LD HL,LWRD ResShowPic
JP LWRD ?BANK_CALL_DIRECT_L08
?0064:
LD BC,0
LD DE,65535
JP LWRD SetPenColor
ui_bookmark_list:
; 95. /*
; 96. ********************************************************************************
; 97. * Description : 弹出式列表选择窗体
; 98. *
; 99. * Arguments :
; 100. * list, 弹出式列表结构体指针
; 101. * list->string, 语言
; 102. *
; 103. * Returns : key
; 104. *
; 105. * Notes :
; 106. *
; 107. ********************************************************************************
; 108. */
; 109. int ui_bookmark_list(pop_up_list_t *list, const void (*callback)(int value))
; 110. {
PUSH BC
PUSH IY
PUSH IX
LD IX,0
ADD IX,SP
LD HL,65512
ADD HL,SP
LD SP,HL
PUSH DE
POP IY
; 111. int i,active,old_active;
; 112. char key;
; 113. bool need_draw=FALSE;
; 114. bool need_drawall=TRUE;
; 115. bool value_changed=FALSE;
; 116. int max_group; // list->total / 7
; 117. int cur_group; // list->active / LIST_NUM_ONE_PAGE
; 118. int n; // the item to show
; 119. DC oldDC_sav;
; 120.
; 121. active = list->active;
LD HL,4
ADD HL,DE
LD B,(HL)
LD (IX-24),B
INC HL
LD H,(HL)
LD (IX-23),H
; 122.
; 123. if((list->total % LIST_NUM_ONE_PAGE) == 0) max_group--;
LD (IX-4),0
LD (IX-1),1
LD (IX-2),0
INC DE
INC DE
EX DE,HL
LD E,(HL)
INC HL
LD D,(HL)
LD BC,6
CALL LWRD ?SS_MOD_L02
?0002:
?0003:
; 124. GetDCStatus(&oldDC_sav);
LD HL,4
ADD HL,SP
EX DE,HL
CALL LWRD GetDCStatus
; 125.
; 126. SetTextOutMode(1); //设字体透明
LD E,1
CALL LWRD SetTextOutMode
?0005:
; 127.
; 128. while(1)
; 129. {
; 130. if(need_drawall)
XOR A
OR (IX-1)
JR Z,?0008
?0007:
; 131. {
; 132.
; 133. need_drawall=FALSE;
; 134. need_draw=TRUE;
LD (IX-1),0
LD (IX-4),1
?0008:
; 135. }
; 136.
; 137. if(need_draw)
XOR A
OR (IX-4)
JP Z,?0010
?0009:
; 138. {
; 139. old_active=active;
; 140. cur_group = active / LIST_NUM_ONE_PAGE;
LD BC,6
LD E,(IX-24)
LD D,(IX-23)
CALL LWRD ?SS_DIV_L02
LD (IX-10),E
LD (IX-9),D
; 141. n = cur_group*LIST_NUM_ONE_PAGE;
EX DE,HL
ADD HL,HL
LD C,L
LD B,H
ADD HL,HL
ADD HL,BC
LD (IX-12),L
LD (IX-11),H
; 142. ResShowPic(MENUTWO,0,0);
LD C,0
PUSH BC
LD DE,195
CALL LWRD ?0062
POP AF
; 143. ResShowPic(DHT,194,8);
LD C,8
PUSH BC
LD C,194
LD DE,38
CALL LWRD ?0062
POP AF
; 144. SetPenColor(Color_WHITE_def);
CALL LWRD ?0064
; 145. ResShowMultiString(list->headid, list->string_id,
; 146. list_str_x_def, list_str_y_def);
LD C,148
PUSH BC
LD C,22
PUSH BC
LD C,(IY+8)
LD E,(IY+6)
LD D,(IY+7)
LD A,BYTE3 ResShowMultiString
LD HL,LWRD ResShowMultiString
CALL LWRD ?BANK_CALL_DIRECT_L08
POP AF
POP AF
; 147.
; 148. SetPenColor(Color_WHITE_def);
CALL LWRD ?0064
; 149. for(i=0; i<LIST_NUM_ONE_PAGE; i++)
LD L,(IX-24)
LD H,(IX-23)
LD (IX-8),L
LD (IX-7),H
XOR A
LD (IX-22),A
LD (IX-21),A
?0012:
LD BC,32774
LD L,(IX-22)
LD H,(IX-21)
LD A,B
XOR H
LD H,A
SBC HL,BC
JP NC,?0011
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -