📄 sdrv_textoutrect.s01
字号:
NAME sdrv_textoutrect(16)
RSEG BBC_PUTS(0)
PUBLIC Sdrv_TextOutRect
EXTERN region_win
EXTERN regionbak_win
EXTERN ?CLZ80L_4_04_L00
RSEG BBC_PUTS
Sdrv_TextOutRect:
; 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_TextOutRect.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. #pragma memory=constseg(BBS_PUTS)
; 18. #pragma memory=default
; 19.
; 20. #pragma memory=dataseg(BBD_PUTS)
; 21. #pragma memory=default
; 22.
; 23. #pragma codeseg(BBC_PUTS)
; 24.
; 25. ////*******************************************************************************/
; 26. ///* non_banked void Sdrv_TextOutRect(region_t * region, char *str);
; 27. //** FUNCTION: Sdrv_TextOutRect
; 28. //**
; 29. //** Description: 在指定的区域上输出一个字符串,如串的长度超过区域则自动换行
; 30. // 直到字符结束或区域用完
; 31. //** input
; 32. //** region_t * TORregion: 指定输出字符的区域 ;
; 33. //** strlen: 字符串首址
; 34. //**
; 35. //** output
; 36. //** none
; 37. //********************************************************************************/
; 38. //non_banked void Sdrv_TextOutRect(region_t * TORregion, char *str)
; 39. non_banked char *Sdrv_TextOutRect(region_t * TORregion, char mode)
; 40. {
PUSH BC
PUSH DE
; 41.
; 42. if(mode)
XOR A
OR C
JR Z,?0001
?0000:
; 43. {
; 44. regionbak_win = region_win;
LD DE,regionbak_win
LD HL,region_win
LD BC,4
LDIR
; 45. region_win = *TORregion;
LD DE,region_win
LD L,C
LD H,B
ADD HL,SP
LD B,(HL)
INC HL
LD H,(HL)
LD L,B
LD BC,4
LDIR
; 46. }
; 47. else
JR ?0002
?0001:
; 48. region_win = regionbak_win;
LD DE,region_win
LD HL,regionbak_win
LD BC,4
LDIR
?0002:
; 49.
; 50. /*
; 51. char *str_tmp;//记录当前输出到的字符首址
; 52. region_t oldregion_bak;//备份原来的窗口值
; 53.
; 54. oldregion_bak = region_win;
; 55.
; 56. //设置输出窗口
; 57. region_win = *TORregion;
; 58.
; 59. //
; 60. str_tmp = str;
; 61.
; 62. //设置输出字符串的起点
; 63. region.x = region_win.x;
; 64. region.y = region_win.y;
; 65. do
; 66. {
; 67. str_tmp = BAPI_PutS(str_tmp, -1);
; 68. region.x = region_win.x; //回到区域首列
; 69. region.y += StrHeight; //加刚才那一行的高度
; 70. }while(PutCharErrFlag == RESULT_PUTCHAR_X_ERR);//x轴超限,要回到下一行
; 71. region_win = oldregion_bak;//恢复原来的窗口
; 72. return;
; 73. */
; 74. }
POP HL
POP HL
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -