📄 sdrv_common_thai.s01
字号:
NAME sdrv_common_thai(16)
RSEG UI_RCODE(0)
EXTERN CharPointBuffer
PUBLIC Sdrv_add_image
PUBLIC Sdrv_check_symble
EXTERN back_CharPointBuffer
EXTERN next_thai_flag
EXTERN thai_flag
EXTERN ?CLZ80L_4_04_L00
RSEG UI_RCODE
Sdrv_add_image:
; 1. /*
; 2. ********************************************************************************
; 3. * ACTOS
; 4. * ui dirver show picture
; 5. *
; 6. * (c) Copyright 2002-2003, Actions Co,Ld.
; 7. * All Right Reserved
; 8. *
; 9. * File : sdrv_charOutrect.c
; 10. * By : Rcmai
; 11. * Version: 1> v1.00 first version 10/17/2003 10:46PM
; 12. ********************************************************************************
; 13. */
; 14. #include "display.h"
; 15. #include "Drv_S6B33B0A.h"
; 16.
; 17. extern char next_thai_flag;
; 18. extern char thai_flag;
; 19.
; 20. #pragma codeseg(UI_RCODE)
; 21.
; 22. ////*******************************************************************************/
; 23. ///*
; 24. //** FUNCTION: Sdrv_CharOutRect
; 25. //**
; 26. //** Description: 在指定的区域上打出一个字符,超出区域部分不显示,没有超出屏幕的部分将正常显示。
; 27. //**
; 28. //** input
; 29. //** code: 字符的码值
; 30. //** CRregion: 要求输出的区域
; 31. //** colcnt: 要求从汉字的哪一列开始输出
; 32. //** output
; 33. //** bool: 当指定列数超出该字的总列数时返回FALSE,否则返回TRUE
; 34. //********************************************************************************/
; 35.
; 36. non_banked bool Sdrv_add_image(void)
; 37. {
PUSH BC
PUSH DE
PUSH IY
PUSH IX
; 38. int i;
; 39. char *p1,*p2;
; 40.
; 41. p1 = back_CharPointBuffer;
LD IY,back_CharPointBuffer
; 42. p2 = CharPointBuffer;
LD IX,CharPointBuffer
; 43. if(thai_flag == 1)
LD A,(thai_flag)
DEC A
LD DE,0
JR NZ,?0001
?0000:
; 44. {
; 45. for(i=0;i<32;i++)
?0003:
LD BC,32800
LD L,E
LD H,D
LD A,B
XOR H
LD H,A
SBC HL,BC
JR NC,?0002
?0004:
; 46. {
; 47. *p1++ = *p2++;
LD B,(IX+0)
LD (IY+0),B
INC DE
INC IX
INC IY
JR ?0003
?0002:
; 48. }
; 49.
; 50. if(next_thai_flag==0)
LD A,(next_thai_flag)
OR A
JR NZ,?0009
?0006:
; 51. return TRUE;
LD A,1
; 52. }
JR ?0009
?0007:
; 53. else
?0001:
; 54. {
; 55. for(i=0;i<32;i++)
?0010:
LD BC,32800
LD L,E
LD H,D
LD A,B
XOR H
LD H,A
SBC HL,BC
JR NC,?0009
?0011:
; 56. *p2++ |= *p1++;
LD A,(IX+0)
OR (IY+0)
LD (IX+0),A
INC DE
; 57. }
INC IX
INC IY
JR ?0001
?0009:
?0008:
; 58. }
?0013:
POP IX
POP IY
POP DE
POP BC
RET
Sdrv_check_symble:
; 59.
; 60. non_banked bool Sdrv_check_symble(unsigned char code)
; 61. {
; 62. if(code == 0xd1 || (code >=0xd4 && code<0xdb) ||(code >=0xe7 && code<0xef))
LD A,E
CP 209
JR Z,?0021
CP 212
JR C,?0019
CP 219
JR C,?0021
?0019:
?0018:
CP 231
JR C,?0015
CP 239
JR NC,?0015
?0021:
?0020:
?0016:
?0017:
?0014:
; 63. thai_flag = 0;
XOR A
JR ?0024
; 64. else
?0015:
; 65. thai_flag = 1;
LD A,1
?0024:
LD (thai_flag),A
?0022:
; 66. }
RET
; 67. /*
; 68.
; 69. non_banked bool Sdrv_Set_next(unsigned char mode)
; 70. {
; 71. // if(code == 0xd1 || (code >=0xd4 && code<0xdb) ||(code >=0xe7 && code<0xef))
; 72. // thai_flag = 0;
; 73. // else
; 74. // thai_flag = 1;
; 75. next_thai_flag = mode;
; 76. }
; 77. */
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -