📄 sdrv_textoutrect.lst
字号:
##############################################################################
# #
# IAR Z80/64180 C-Compiler V4.04B/WIN #
# Front End V4.20N 18/May/107 10:54:39 #
# Global Optimizer V1.05D #
# #
# Target option = Z80 #
# Memory model = large #
# Source file = d:\case_i_d913f\drv\ui_ssd1332\sdrv\sdrv_textoutrect.c#
# List file = d:\case_i_d913f\drv\ui_ssd1332\ui_ssd13_r\list\sdrv_textoutrect.lst#
# Object file = d:\case_i_d913f\drv\ui_ssd1332\ui_ssd13_r\obj\sdrv_textoutrect.r01#
# ASM file = d:\case_i_d913f\drv\ui_ssd1332\ui_ssd13_r\list\sdrv_textoutrect.s01#
# Command line = -v0 -ml -uu #
# -OD:\case_i_d913f\drv\Ui_SSD1332\UI_SSD13_R\Obj\ #
# -e -K -w -gA -s9 -RCODE -r0 -DIC3951 -DNAPDEBUG #
# -LD:\case_i_d913f\drv\Ui_SSD1332\UI_SSD13_R\List\ #
# -q -t8 #
# -AD:\case_i_d913f\drv\Ui_SSD1332\UI_SSD13_R\List\ #
# -Id:\sdk_i_913f\inc\ -Id:\case_i_d913f\inc\ #
# -Id:\case_i_d913f\drv\ui_ssd1332\inc\ #
# d:\case_i_d913f\DRV\UI_SSD1332\SDRV\sdrv_textoutrect.c #
# #
# (c) Copyright IAR Systems 1996 #
##############################################################################
\ 0000 NAME sdrv_textoutrect(16)
\ 0000 RSEG BBC_PUTS(0)
\ 0000 EXTERN BAPI_PutS
\ 0000 EXTERN PutCharErrFlag
\ 0000 PUBLIC Sdrv_TextOutRect
\ 0000 EXTERN StrHeight
\ 0000 EXTERN region
\ 0000 EXTERN region_win
\ 0000 EXTERN ?CLZ80L_4_04_L00
\ 0000 RSEG BBC_PUTS
\ 0000 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 {
\ 0000 DDE5 PUSH IX
\ 0002 C5 PUSH BC
\ 0003 D5 PUSH DE
\ 0004 F5 PUSH AF
\ 0005 F5 PUSH AF
40 char *str_tmp;//记录当前输出到的字符首址
41 region_t oldregion_bak;//备份原来的窗口值
42
43 oldregion_bak = region_win;
\ 0006 210000 LD HL,0
\ 0009 39 ADD HL,SP
\ 000A EB EX DE,HL
\ 000B 210000 LD HL,region_win
\ 000E 010400 LD BC,4
\ 0011 EDB0 LDIR
44
45 //设置输出窗口
46 region_win = *TORregion;
\ 0013 110000 LD DE,region_win
\ 0016 210400 LD HL,4
\ 0019 39 ADD HL,SP
\ 001A 46 LD B,(HL)
\ 001B 23 INC HL
\ 001C 66 LD H,(HL)
\ 001D 68 LD L,B
\ 001E 010400 LD BC,4
\ 0021 EDB0 LDIR
47
48 //
49 str_tmp = str;
\ 0023 210600 LD HL,6
\ 0026 39 ADD HL,SP
\ 0027 46 LD B,(HL)
\ 0028 23 INC HL
\ 0029 66 LD H,(HL)
\ 002A 68 LD L,B
\ 002B E5 PUSH HL
\ 002C DDE1 POP IX
50
51 //设置输出字符串的起点
52 region.x = region_win.x;
\ 002E 3A0000 LD A,(region_win)
\ 0031 320000 LD (region),A
53 region.y = region_win.y;
\ 0034 3A0100 LD A,(region_win+1)
\ 0037 320100 LD (region+1),A
\ 003A ?0002:
54 do
55 {
56 str_tmp = BAPI_PutS(str_tmp, -1);
\ 003A 0EFF LD C,255
\ 003C DDE5 PUSH IX
\ 003E D1 POP DE
\ 003F CD0000 CALL BAPI_PutS
\ 0042 E5 PUSH HL
\ 0043 DDE1 POP IX
57 region.x = region_win.x; //回到区域首列
\ 0045 3A0000 LD A,(region_win)
\ 0048 320000 LD (region),A
58 region.y += StrHeight; //加刚才那一行的高度
\ 004B 3A0000 LD A,(StrHeight)
\ 004E 47 LD B,A
\ 004F 3A0100 LD A,(region+1)
\ 0052 80 ADD A,B
\ 0053 320100 LD (region+1),A
59 }while(PutCharErrFlag == RESULT_PUTCHAR_X_ERR);//x轴超限,要回到下一行
\ 0056 3A0000 LD A,(PutCharErrFlag)
\ 0059 3D DEC A
\ 005A 28DE JR Z,?0002
\ 005C ?0000:
60 region_win = oldregion_bak;//恢复原来的窗口
\ 005C 110000 LD DE,region_win
\ 005F 210000 LD HL,0
\ 0062 39 ADD HL,SP
\ 0063 010400 LD BC,4
\ 0066 EDB0 LDIR
61 return;
62 }
\ 0068 E1 POP HL
\ 0069 E1 POP HL
\ 006A E1 POP HL
\ 006B E1 POP HL
\ 006C DDE1 POP IX
\ 006E C9 RET
\ 006F END
Errors: none
Warnings: none
Code size: 111
Constant size: 0
Static variable size: Data(0) Iram(0)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -