⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 sdrv_charoutrect.lst

📁 MP3 整个 SDK
💻 LST
📖 第 1 页 / 共 2 页
字号:
##############################################################################
#                                                                            #
# IAR Z80/64180 C-Compiler V4.04B/WIN                                        #
# Front End V4.20N                                       28/Dec/106  14:32:08 #
# Global Optimizer V1.05D                                                    #
#                                                                            #
#       Target option =  Z80                                                 #
#       Memory model  =  large                                               #
#       Source file   =  d:\case_i_d90f\drv\ui_ssd1332\sdrv\sdrv_charoutrect.c#
#       List file     =  d:\case_i_d90f\drv\ui_ssd1332\ui_ssd13\list\sdrv_charoutrect.lst#
#       Object file   =  d:\case_i_d90f\drv\ui_ssd1332\ui_ssd13\obj\sdrv_charoutrect.r01#
#       ASM file      =  d:\case_i_d90f\drv\ui_ssd1332\ui_ssd13\list\sdrv_charoutrect.s01#
#       Command line  =  -v0 -ml -uu                                         #
#                        -OD:\case_i_d90f\drv\Ui_SSD1332\UI_SSD13\Obj\ -e    #
#                        -K -w -gA -s9 -RCODE -r0 -DIC3951 -DNAPDEBUG        #
#                        -LD:\case_i_d90f\drv\Ui_SSD1332\UI_SSD13\List\ -q   #
#                        -t8 -AD:\case_i_d90f\drv\Ui_SSD1332\UI_SSD13\List\  #
#                        -Id:\sdk_i_90f\inc\ -Id:\case_i_d90f\inc\           #
#                        -Id:\case_i_d90f\drv\Ui_SSD1332\inc\                #
#                        D:\CASE_I_D90F\DRV\UI_SSD1332\SDRV\sdrv_charoutrect.c #
#                                                                            #
#                                             (c) Copyright IAR Systems 1996 #
##############################################################################

   \   0000                    NAME    sdrv_charoutrect(16)
   \   0000                    RSEG    BBC_PUTS(0)
   \   0000                    EXTERN  BlackCharToColor
   \   0000                    EXTERN  CharPointBuffer
   \   0000                    EXTERN  CheckCharMode
   \   0000                    EXTERN  DisplayBuffer
   \   0000                    EXTERN  Hdrv_BuffDataTrans
   \   0000                    EXTERN  Hdrv_SetDrawMode
   \   0000                    EXTERN  Hdrv_SetWindow
   \   0000                    EXTERN  PutCharErrFlag
   \   0000                    PUBLIC  Sdrv_CharOutRect
   \   0000                    EXTERN  Sdrv_GetFontPoint
   \   0000                    EXTERN  putCharChFlag
   \   0000                    EXTERN  region
   \   0000                    EXTERN  ?CLZ80L_4_04_L00
   \   0000                    RSEG    BBC_PUTS
   \   0000            Sdrv_CharOutRect:
      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          //#pragma codeseg(UI_RCODE)
     18          
     19          #pragma memory=constseg(BBS_PUTS)
     20          #pragma memory=default
     21          
     22          #pragma memory=dataseg(BBD_PUTS)
     23          #pragma memory=default
     24          
     25          #pragma codeseg(BBC_PUTS)
     26          
     27          
     28          
     29          ////*******************************************************************************/
     30          ///*
     31          //** FUNCTION:     Sdrv_CharOutRect
     32          //**
     33          //** Description:  在指定的区域上打出一个字符,超出区域部分不显示,没有超出屏幕的部分将正常显示。
     34          //**
     35          //**  input
     36          //**     code: 字符的码值
     37          //**     CRregion: 要求输出的区域
     38          //**     colcnt:   要求从汉字的哪一列开始输出   
     39          //**  output
     40          //**     bool: 当指定列数超出该字的总列数时返回FALSE,否则返回TRUE
     41          //********************************************************************************/
     42          
     43          non_banked bool Sdrv_CharOutRect(int code, region_t *CRregion, BYTE colcnt)
     44          {
   \   0000  FDE5              PUSH    IY
   \   0002  DDE5              PUSH    IX
   \   0004  DD210000          LD      IX,0
   \   0008  DD39              ADD     IX,SP
   \   000A  D5                PUSH    DE
   \   000B  F5                PUSH    AF
   \   000C  C5                PUSH    BC
   \   000D  FDE1              POP     IY
     45              char charmode;
     46              bool putchar_result;
     47              char tmpwidth;
     48          
     49              if (CRregion->width == NULL)
   \   000F  03                INC     BC
   \   0010  03                INC     BC
   \   0011  0A                LD      A,(BC)
   \   0012  B7                OR      A
   \   0013  CADE00            JP      Z,?0031
   \   0016            ?0000:
     50              {    
     51                  return FALSE;
     52              }
   \   0016            ?0001:
     53              PutCharErrFlag = RESULT_PUTCHAR_OK; //默认为OK
   \   0016  AF                XOR     A
   \   0017  320000            LD      (PutCharErrFlag),A
     54              Hdrv_SetDrawMode(DrawModeV_def);    //把显示模式设置成竖向显示模式(与旧字库兼容)
   \   001A  110100            LD      DE,1
   \   001D  CD0000            CALL    Hdrv_SetDrawMode
     55              Sdrv_GetFontPoint(code, CharPointBuffer);//取点阵
   \   0020  010000            LD      BC,CharPointBuffer
   \   0023  DD5EFE            LD      E,(IX-2)
   \   0026  DD56FF            LD      D,(IX-1)
   \   0029  CD0000            CALL    Sdrv_GetFontPoint
     56          
     57              charmode = CheckCharMode(code);
   \   002C  DD5EFE            LD      E,(IX-2)
   \   002F  DD56FF            LD      D,(IX-1)
   \   0032  CD0000            CALL    CheckCharMode
     58              switch(charmode)
   \   0035  FE00              CP      0
   \   0037  203E              JR      NZ,?0009
   \   0039            ?0003:
     59              {    
     60              case CharMode0608://06*08点阵模式(ascii小字体)     
     61          
     62                  if (colcnt >= 6)
   \   0039  DD7E06            LD      A,(IX+6)
   \   003C  FE06              CP      6
   \   003E  D2D800            JP      NC,?0032
   \   0041            ?0004:
     63                  {//计数值超出
     64                      Hdrv_SetDrawMode(DrawModeH_def);    //把显示模式设置成横向显示模
     65                      return FALSE;
     66                  }
   \   0041            ?0005:
     67                  //确定输出区域
     68                  region.x = CRregion->x;
     69                  region.y = CRregion->y;
     70                  region.width = CRregion->width;
     71                  region.height = ASCII_SMALL_HEIGHT_DEF;       
     72                  Hdrv_SetWindow(&region);
   \   0041  CD6001            CALL    ?0035
     73          
     74                  //取最小的值.
     75                  tmpwidth = (CRregion->width < (6-colcnt))? (CRregion->width):(6-colcnt); 
   \   0044  DD4E06            LD      C,(IX+6)
   \   0047  0600              LD      B,0
   \   0049  210600            LD      HL,6
   \   004C  A7                AND     A
   \   004D  ED42              SBC     HL,BC
   \   004F  4D                LD      C,L
   \   0050  44                LD      B,H
   \   0051  FD6E02            LD      L,(IY+2)
   \   0054  2600              LD      H,0
   \   0056  F680              OR      128
   \   0058  ED42              SBC     HL,BC
   \   005A  E25E00            JP      PO,?0023
   \   005D  AC                XOR     H
   \   005E            ?0023:
   \   005E  F26600            JP      P,?0007
   \   0061  FD7E02            LD      A,(IY+2)
   \   0064  1805              JR      ?0008
   \   0066            ?0007:
   \   0066  3E06              LD      A,6
   \   0068  DD9606            SUB     (IX+6)
   \   006B            ?0008:
   \   006B  DD77FC            LD      (IX-4),A
     76          
     77                  //把黑白字模转为彩色字模放在Buff中
     78                  BlackCharToColor(ASCII_SMALL_WIDTH_DEF, CharPointBuffer);
   \   006E  010000            LD      BC,CharPointBuffer
   \   0071  110600            LD      DE,6
   \   0074  C34E01            JP      ?0033
     79                  //把暂时显存区的数据送到LCM
     80                  Hdrv_BuffDataTrans(DisplayBuffer+colcnt*ASCII_SMALL_HEIGHT_DEF*2, 
     81                                                  ASCII_SMALL_HEIGHT_DEF*tmpwidth*2);
     82          
     83                  //region.x += ASCII_SMALL_WIDTH_DEF;//坐标移到下一个字的左上角
     84                  break;
   \   0077            ?0009:
   \   0077  FE01              CP      1
   \   0079  2051              JR      NZ,?0015
     85                  
     86              case CharMode0816://08*16点阵模式(ascii大字体)
     87                  //设置字模输出的大小//上半个字
     88                  //region.width = ASCII_LARGE_WIDTH_DEF;
     89                  if (colcnt >= 8)
   \   007B  DD7E06            LD      A,(IX+6)
   \   007E  FE08              CP      8
   \   0080  3056              JR      NC,?0032
   \   0082            ?0010:
     90                  {//计数值超出
     91                      Hdrv_SetDrawMode(DrawModeH_def);    //把显示模式设置成横向显示模
     92                      return FALSE;
     93                  }
   \   0082            ?0011:
     94                  //确定输出区域
     95                  region.x = CRregion->x;
     96                  region.y = CRregion->y;
     97                  region.width = CRregion->width;
     98                  region.height = ASCII_LARGE_HEIGHT_DEF/2;
     99                  Hdrv_SetWindow(&region);
   \   0082  CD6001            CALL    ?0035
    100          
    101                  //取最小的值.
    102                  tmpwidth = (CRregion->width < (8-colcnt))? (CRregion->width):(8-colcnt);
   \   0085  DD4E06            LD      C,(IX+6)
   \   0088  0600              LD      B,0
   \   008A  210800            LD      HL,8
   \   008D  A7                AND     A

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -