ui_scroll2.s01
来自「炬力方案176*132软件源码,适用于AK1025」· S01 代码 · 共 278 行
S01
278 行
NAME ui_scroll2(17)
RSEG CODE(0)
EXTERN CharOutRect
EXTERN GetOutPutErr
EXTERN GetTextPos
EXTERN PutS
PUBLIC ScrollInit
PUBLIC ScrollInit_sub
EXTERN SetAsciiFont
EXTERN SetBackgdColor
EXTERN SetTextPos
EXTERN TextOutRect
EXTERN rTmp
EXTERN scroll_cnt
EXTERN str_pt
EXTERN strhead_pt
EXTERN ?CLZ80B_4_04_L00
EXTERN ?BANK_CALL_DIRECT_L08
EXTERN ?BANK_LEAVE_DIRECT_L08
EXTERN ?BANK_FAST_LEAVE_L08
EXTERN ?ENT_AUTO_DIRECT_L09
RSEG CODE
ScrollInit:
; 1. /*
; 2. *******************************************************************************
; 3. * ACTOS AP
; 4. * wma player basal module implementation
; 5. *
; 6. * (c) Copyright Actions Co,Ld.
; 7. *
; 8. * $Id: ui_scroll.c,v 1.3 2004/12/30 09:22:32 ybfu Exp $
; 9. *******************************************************************************
; 10. */
; 11. /*
; 12. 这个函数的作用是在汇编程序外包一层 C ,这样汇编在C中用BANK方式CALL
; 13. */
; 14. #include "actos.h"
; 15. #include "ap_common.h"
; 16.
; 17. ///-extern char *str_pt;//字符串当前指针
; 18. ///-extern char *strhead_pt;//字串首址记录
; 19. ///-extern BYTE scroll_cnt;
; 20.
; 21. extern char rTmp;
; 22.
; 23. void ScrollInit_sub(char *str,char language);
; 24.
; 25. /* (字符串首址,是否初始化true为要初始化) */
; 26. void ScrollInit( char * scrollstr, char language)
; 27. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW 65532
; 28. region_t tregion;
; 29.
; 30. tregion.x = scrollregionx_def;
LD (IX-4),48
; 31. tregion.y = scrollregiony_def;
LD (IX-3),45
; 32. tregion.width = scrollregionw_def;
LD (IX-2),128
; 33. tregion.height = scrollregionh_def;
LD (IX-1),16
; 34.
; 35. SetAsciiFont(FONT_TYPE_LARGE);
LD E,4
CALL LWRD SetAsciiFont
; 36. SetBackgdColor(Color_MENU_def);
LD BC,0
LD DE,65535
CALL LWRD SetBackgdColor
; 37.
; 38. TextOutRect(&tregion ,1);
LD C,1
LD HL,0
ADD HL,SP
EX DE,HL
CALL LWRD TextOutRect
; 39. ScrollInit_sub(scrollstr,language);
LD C,(IX+4)
LD E,(IX+2)
LD D,(IX+3)
LD A,BYTE3 ScrollInit_sub
LD HL,LWRD ScrollInit_sub
CALL LWRD ?BANK_CALL_DIRECT_L08
; 40. TextOutRect(&tregion ,0);
LD C,0
LD L,C
LD H,C
ADD HL,SP
EX DE,HL
CALL LWRD TextOutRect
; 41.
; 42. ///-SetBackgdColor(Color_MENU_def);
; 43. SetAsciiFont(FONT_TYPE_DEFAULT);
LD E,4
CALL LWRD SetAsciiFont
; 44. return;
; 45. }
JP LWRD ?BANK_LEAVE_DIRECT_L08
ScrollInit_sub:
; 46. /*
; 47. int ReadCode_sub(char *str_pt,char language)
; 48. {
; 49. int code;
; 50.
; 51. if((language>4)||(language==1))
; 52. {//ASCII
; 53. code = *str_pt;
; 54. }
; 55. else if(language==3)
; 56. {//jap
; 57. if (*str_pt >= 0x81)
; 58. {
; 59. code = *(int *)str_pt;
; 60. }
; 61. else
; 62. {//ASCII
; 63. code = *str_pt;
; 64. }
; 65. }
; 66. else if (*str_pt >= FirstSectionCode)
; 67. {//汉字
; 68. code = *(int *)str_pt;
; 69. }
; 70. else
; 71. {//ASCII
; 72. code = *str_pt;
; 73. }
; 74. return code;
; 75. }
; 76. */
; 77. void ScrollInit_sub(char *str,char language)
; 78. {
CALL LWRD ?ENT_AUTO_DIRECT_L09
DEFW 65530
; 79. int code;
; 80. region_t kregion;//余下部分区域
; 81.
; 82. SetTextPos(scrollregionx_def, scrollregiony_def);
LD C,45
LD E,48
CALL LWRD SetTextPos
; 83. strhead_pt = str_pt = str;
LD L,(IX+2)
LD H,(IX+3)
LD (str_pt),HL
LD (strhead_pt),HL
; 84.
; 85. str_pt = PutS(str_pt, -1);
LD C,255
EX DE,HL
CALL LWRD PutS
LD (str_pt),HL
; 86.
; 87. if (GetOutPutErr() == RESULT_PUTCHAR_X_ERR)
CALL LWRD GetOutPutErr
DEC A
JR NZ,?0003
?0002:
; 88. {//x超限
; 89.
; 90. ///code = ReadCode_sub(str_pt, language);
; 91. //---------------------------------------
; 92. if((language>4)||(language==1))
LD A,4
CP (IX+4)
JR C,?0016
LD B,(IX+4)
DEC B
JR Z,?0016
?0006:
?0007:
?0004:
; 93. {//ASCII
; 94. code = *str_pt;
?0005:
; 95. }
; 96. else if(language==3)
LD A,(IX+4)
CP 3
LD HL,(str_pt)
LD A,(HL)
JR NZ,?0010
?0009:
; 97. {//jap
; 98. if (*str_pt >= 0x81)
CP 129
JR C,?0019
?0011:
; 99. {
; 100. code = *(int *)str_pt;
JR ?0020
; 101. }
; 102. else
?0012:
; 103. {//ASCII
; 104. code = *str_pt;
?0013:
?0010:
; 105. }
; 106. }
; 107. else if (*str_pt >= FirstSectionCode)
CP 161
JR C,?0016
?0015:
; 108. {//汉字
; 109. code = *(int *)str_pt;
?0020:
LD B,(HL)
LD (IX-2),B
INC HL
LD H,(HL)
LD (IX-1),H
; 110. }
; 111. else
JR ?0017
?0016:
; 112. {//ASCII
; 113. code = *str_pt;
LD HL,(str_pt)
?0019:
LD C,(HL)
LD (IX-2),C
LD (IX-1),0
?0017:
?0014:
?0008:
; 114. }
; 115. //---------------------------------------
; 116.
; 117. GetTextPos(&kregion.x, &kregion.y);
LD HL,0
ADD HL,SP
LD BC,1
ADD HL,BC
LD C,L
LD B,H
DEC HL
EX DE,HL
CALL LWRD GetTextPos
; 118.
; 119. kregion.width = scrollregionw_def+scrollregionx_def - kregion.x;
LD A,176
SUB (IX-6)
LD (IX-4),A
; 120. kregion.height = scrollregionh_def;
LD (IX-3),16
; 121.
; 122. //输出最后一个字
; 123. CharOutRect(code, *(str_pt+1), &kregion, 0);
LD C,0
PUSH BC
LD HL,2
ADD HL,SP
PUSH HL
LD HL,(str_pt)
INC HL
LD C,(HL)
LD B,0
LD E,(IX-2)
LD D,(IX-1)
CALL LWRD CharOutRect
POP HL
POP HL
?0003:
; 124. }
; 125. str_pt = strhead_pt;
LD HL,(strhead_pt)
LD (str_pt),HL
; 126. scroll_cnt = 0;
XOR A
LD (scroll_cnt),A
; 127. rTmp = 0;
LD (rTmp),A
; 128. }
JP LWRD ?BANK_LEAVE_DIRECT_L08
END
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?