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

📄 sdrv_invert.lst

📁 一种彩屏驱动以及画点,填充图片和填充数据的一些程序
💻 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_invert.c   #
#       List file     =  d:\case_i_d913f\drv\ui_ssd1332\ui_ssd13_r\list\sdrv_invert.lst#
#       Object file   =  d:\case_i_d913f\drv\ui_ssd1332\ui_ssd13_r\obj\sdrv_invert.r01#
#       ASM file      =  d:\case_i_d913f\drv\ui_ssd1332\ui_ssd13_r\list\sdrv_invert.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_Invert.c   #
#                                                                            #
#                                             (c) Copyright IAR Systems 1996 #
##############################################################################

   \   0000                    NAME    sdrv_invert(16)
   \   0000                    RSEG    BBC_HFUN(0)
   \   0000                    EXTERN  DisplayBuffer
   \   0000                    EXTERN  Hdrv_GetBuffData
   \   0000                    EXTERN  Hdrv_InvBuffDataTrans
   \   0000                    EXTERN  Hdrv_SetWindow
   \   0000                    PUBLIC  Sdrv_Invert
   \   0000                    EXTERN  region_win
   \   0000                    EXTERN  ?CLZ80L_4_04_L00
   \   0000                    EXTERN  ?SS_DIV_L02
   \   0000                    EXTERN  ?S_MUL_L02
   \   0000                    RSEG    BBC_HFUN
   \   0000            Sdrv_Invert:
      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_Invert.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_HFUN)
     18          #pragma memory=default
     19          
     20          #pragma memory=dataseg(BBD_HFUN)
     21          //SD_RW sdrw;
     22          //extern  unsigned char BufPage;
     23          #pragma memory=default
     24          
     25          #pragma codeseg(BBC_HFUN)
     26          
     27          ////*******************************************************************************/
     28          ///* 把指定区域作反白显示
     29          //** FUNCTION:     Sdrv_Invert
     30          //**
     31          //** Description:  
     32          //**
     33          //**  input
     34          //**        region_t * D3region: 要反白区域的区域大小
     35          //**        
     36          //**  output
     37          //**     none
     38          //********************************************************************************/
     39          
     40          void Sdrv_Invert (region_t * Invregion)
     41          {
   \   0000  C5                PUSH    BC
   \   0001  FDE5              PUSH    IY
   \   0003  DDE5              PUSH    IX
   \   0005  DD210000          LD      IX,0
   \   0009  DD39              ADD     IX,SP
   \   000B  D5                PUSH    DE
   \   000C  F5                PUSH    AF
   \   000D  F5                PUSH    AF
   \   000E  F5                PUSH    AF
   \   000F  F5                PUSH    AF
     42          
     43              int block_pixel;//每一小块象素的个数
     44              BYTE block_line; //每一小块的行数
     45              int i;
     46          
     47              region_t tmpregion;//临时使用
     48              BYTE line_cnt;//行数计数器
     49          
     50              tmpregion = *Invregion;
   \   0010  210000            LD      HL,0
   \   0013  39                ADD     HL,SP
   \   0014  EB                EX      DE,HL
   \   0015  010400            LD      BC,4
   \   0018  EDB0              LDIR
     51          
     52              if ((tmpregion.x + tmpregion.width) > (region_win.x+region_win.width)
     53                          || (tmpregion.y + tmpregion.height) > (region_win.y + region_win.height) )
   \   001A  DD6EF8            LD      L,(IX-8)
   \   001D  DD5EF6            LD      E,(IX-10)
   \   0020  50                LD      D,B
   \   0021  60                LD      H,B
   \   0022  19                ADD     HL,DE
   \   0023  4D                LD      C,L
   \   0024  44                LD      B,H
   \   0025  ED5B0200          LD      DE,(region_win+2)
   \   0029  1600              LD      D,0
   \   002B  2A0000            LD      HL,(region_win)
   \   002E  62                LD      H,D
   \   002F  19                ADD     HL,DE
   \   0030  F680              OR      128
   \   0032  ED42              SBC     HL,BC
   \   0034  E23800            JP      PO,?0008
   \   0037  AC                XOR     H
   \   0038            ?0008:
   \   0038  FA0901            JP      M,?0007
   \   003B  DD6EF9            LD      L,(IX-7)
   \   003E  62                LD      H,D
   \   003F  DD5EF7            LD      E,(IX-9)
   \   0042  19                ADD     HL,DE
   \   0043  4D                LD      C,L
   \   0044  44                LD      B,H
   \   0045  ED5B0300          LD      DE,(region_win+3)
   \   0049  1600              LD      D,0
   \   004B  2A0100            LD      HL,(region_win+1)
   \   004E  62                LD      H,D
   \   004F  19                ADD     HL,DE
   \   0050  F680              OR      128
   \   0052  ED42              SBC     HL,BC
   \   0054  E25800            JP      PO,?0009
   \   0057  AC                XOR     H
   \   0058            ?0009:
   \   0058  FA0901            JP      M,?0007
   \   005B            ?0002:
   \   005B            ?0003:
   \   005B            ?0000:
     54              {
     55                  return;//超限返回
     56              }
   \   005B            ?0001:
     57          
     58              //把一个大的矩形分成N个小的矩形块,每个小矩形数据应能用一个page buf 传送完,
     59              block_line = DisplayBufLen/(2*(tmpregion.width));
   \   005B  DD6EF8            LD      L,(IX-8)
   \   005E  62                LD      H,D
   \   005F  29                ADD     HL,HL
   \   0060  4D                LD      C,L
   \   0061  44                LD      B,H
   \   0062  110002            LD      DE,512
   \   0065  CD0000            CALL    ?SS_DIV_L02
   \   0068  DD73FD            LD      (IX-3),E
     60              block_pixel = block_line * (tmpregion.width);
   \   006B  DD4EF8            LD      C,(IX-8)
   \   006E  0600              LD      B,0
   \   0070  50                LD      D,B
   \   0071  CD0000            CALL    ?S_MUL_L02
   \   0074  D5                PUSH    DE
   \   0075  FDE1              POP     IY
     61          
     62              line_cnt = tmpregion.height;//保存高度值
   \   0077  DD46F9            LD      B,(IX-7)
   \   007A  DD70FC            LD      (IX-4),B
     63              tmpregion.height = block_line;
   \   007D  DD46FD            LD      B,(IX-3)
   \   0080  DD70F9            LD      (IX-7),B
   \   0083            ?0005:
     64          
     65              while (line_cnt > block_line)
   \   0083  DD7EFD            LD      A,(IX-3)
   \   0086  DDBEFC            CP      (IX-4)
   \   0089  303B              JR      NC,?0004
   \   008B            ?0006:
     66              {
     67                  //把数据读出
     68                  Hdrv_SetWindow(&tmpregion);
   \   008B  210000            LD      HL,0
   \   008E  39                ADD     HL,SP
   \   008F  EB                EX      DE,HL
   \   0090  CD0000            CALL    Hdrv_SetWindow
     69                  Hdrv_GetBuffData(DisplayBuffer, block_pixel, NORTransMode_def);
   \   0093  210000            LD      HL,0
   \   0096  E5                PUSH    HL
   \   0097  FDE5              PUSH    IY
   \   0099  C1                POP     BC
   \   009A  110000            LD      DE,DisplayBuffer
   \   009D  CD0000            CALL    Hdrv_GetBuffData
   \   00A0  F1                POP     AF
     70                  Hdrv_SetWindow(&tmpregion);
   \   00A1  210000            LD      HL,0
   \   00A4  39                ADD     HL,SP
   \   00A5  EB                EX      DE,HL
   \   00A6  CD0000            CALL    Hdrv_SetWindow
     71                  Hdrv_InvBuffDataTrans(DisplayBuffer,block_pixel);
   \   00A9  FDE5              PUSH    IY
   \   00AB  C1                POP     BC
   \   00AC  110000            LD      DE,DisplayBuffer
   \   00AF  CD0000            CALL    Hdrv_InvBuffDataTrans
     72                  line_cnt -= block_line;
   \   00B2  210600            LD      HL,6
   \   00B5  39                ADD     HL,SP
   \   00B6  7E                LD      A,(HL)
   \   00B7  DD96FD            SUB     (IX-3)
   \   00BA  77                LD      (HL),A
     73                  tmpregion.y += block_line;        
   \   00BB  DD7EF7            LD      A,(IX-9)
   \   00BE  DD86FD            ADD     A,(IX-3)
   \   00C1  DD77F7            LD      (IX-9),A
   \   00C4  18BD              JR      ?0005
   \   00C6            ?0004:
     74              }
     75                  
     76              //反相余下的        
     77              tmpregion.height = line_cnt;
   \   00C6  DD46FC            LD      B,(IX-4)
   \   00C9  DD70F9            LD      (IX-7),B
     78              i = line_cnt * tmpregion.width;
   \   00CC  DD4EF8            LD      C,(IX-8)
   \   00CF  0600              LD      B,0
   \   00D1  50                LD      D,B
   \   00D2  DD5EFC            LD      E,(IX-4)
   \   00D5  CD0000            CALL    ?S_MUL_L02
   \   00D8  DD73FA            LD      (IX-6),E
   \   00DB  DD72FB            LD      (IX-5),D
     79              Hdrv_SetWindow(&tmpregion);    
   \   00DE  68                LD      L,B
   \   00DF  60                LD      H,B
   \   00E0  39                ADD     HL,SP
   \   00E1  EB                EX      DE,HL
   \   00E2  CD0000            CALL    Hdrv_SetWindow
     80              Hdrv_GetBuffData(DisplayBuffer, i, NORTransMode_def);
   \   00E5  68                LD      L,B
   \   00E6  60                LD      H,B
   \   00E7  E5                PUSH    HL
   \   00E8  DD4EFA            LD      C,(IX-6)
   \   00EB  DD46FB            LD      B,(IX-5)
   \   00EE  110000            LD      DE,DisplayBuffer
   \   00F1  CD0000            CALL    Hdrv_GetBuffData
   \   00F4  F1                POP     AF
     81              Hdrv_SetWindow(&tmpregion);
   \   00F5  210000            LD      HL,0
   \   00F8  39                ADD     HL,SP
   \   00F9  EB                EX      DE,HL
   \   00FA  CD0000            CALL    Hdrv_SetWindow
     82              Hdrv_InvBuffDataTrans(DisplayBuffer, i);       
   \   00FD  DD4EFA            LD      C,(IX-6)
   \   0100  DD46FB            LD      B,(IX-5)
   \   0103  110000            LD      DE,DisplayBuffer
   \   0106  CD0000            CALL    Hdrv_InvBuffDataTrans
     83          }
   \   0109            ?0007:
   \   0109  DDF9              LD      SP,IX
   \   010B  DDE1              POP     IX
   \   010D  FDE1              POP     IY
   \   010F  C1                POP     BC
   \   0110  C9                RET
   \   0111                    END

Errors: none
Warnings: none
Code size: 273
Constant size: 0
Static variable size: Data(0) Iram(0)

⌨️ 快捷键说明

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