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

📄 sdrv_regioncopy.lst

📁 一种彩屏驱动以及画点,填充图片和填充数据的一些程序
💻 LST
📖 第 1 页 / 共 2 页
字号:
   \   00F1  3874              JR      C,?0005
   \   00F3            ?0004:
   \   00F3            ?0007:
     76              {
     77                  //源在目标的下面时,可从上面开始读数据(这样不会覆盖)
     78                  while (line_cnt > block_line)
   \   00F3  DD7EF9            LD      A,(IX-7)
   \   00F6  DDBEF8            CP      (IX-8)
   \   00F9  3037              JR      NC,?0006
   \   00FB            ?0008:
     79                  {
     80                      //读出对应区域的图片内容放在暂存中
     81                      Hdrv_SetWindow(&sregionram);
   \   00FB  210000            LD      HL,0
   \   00FE  39                ADD     HL,SP
   \   00FF  EB                EX      DE,HL
   \   0100  CD0000            CALL    Hdrv_SetWindow
     82                      Hdrv_GetBuffData (DisplayBuffer, block_pixel, NORTransMode_def);
   \   0103  210000            LD      HL,0
   \   0106  E5                PUSH    HL
   \   0107  FDE5              PUSH    IY
   \   0109  C1                POP     BC
   \   010A  110000            LD      DE,DisplayBuffer
   \   010D  CD0000            CALL    Hdrv_GetBuffData
   \   0110  F1                POP     AF
     83                      
     84                      //把暂时显存区的数据送到LCM
     85                      Hdrv_SetWindow(&tregionram);
   \   0111  210400            LD      HL,4
   \   0114  39                ADD     HL,SP
   \   0115  CD1A02            CALL    ?0029
     86                      Hdrv_BuffDataTrans(DisplayBuffer, block_pixel*2);    
     87                                  
     88                      line_cnt -= block_line;
   \   0118  39                ADD     HL,SP
   \   0119  7E                LD      A,(HL)
   \   011A  DD96F9            SUB     (IX-7)
   \   011D  77                LD      (HL),A
     89                      sregionram.y += block_line;     //坐标增加
   \   011E  DD7EEF            LD      A,(IX-17)
   \   0121  DD86F9            ADD     A,(IX-7)
   \   0124  DD77EF            LD      (IX-17),A
     90                      tregionram.y += block_line;
   \   0127  DD7EF3            LD      A,(IX-13)
   \   012A  DD86F9            ADD     A,(IX-7)
   \   012D  DD77F3            LD      (IX-13),A
   \   0130  18C1              JR      ?0004
   \   0132            ?0006:
     91                  }
     92          
     93                  i = sregionram.width * line_cnt;//余下的象素个数
   \   0132  CDFE01            CALL    ?0028
     94          
     95                  sregionram.height = line_cnt;
     96                  tregionram.height = line_cnt;
     97          
     98                  //读出余下不足一个块的区域内容
     99                  Hdrv_SetWindow(&sregionram);
   \   0135  C3C701            JP      ?0018
   \   0138  39                ADD     HL,SP
   \   0139  C3CB01            JP      ?0019
   \   013C  CD0000            CALL    Hdrv_SetWindow
    100                  Hdrv_GetBuffData(DisplayBuffer, i, NORTransMode_def);                                       
   \   013F  C3CF01            JP      ?0020
   \   0142  E5                PUSH    HL
   \   0143  C3D301            JP      ?0021
   \   0146  110000            LD      DE,DisplayBuffer
   \   0149  C3DC01            JP      ?0022
   \   014C  F1                POP     AF
    101                  
    102                  //把暂时显存区的数据送到LCM
    103                  Hdrv_SetWindow(&tregionram);
   \   014D  C3E001            JP      ?0023
   \   0150  39                ADD     HL,SP
   \   0151  C3E401            JP      ?0024
   \   0154  CD0000            CALL    Hdrv_SetWindow
    104                  Hdrv_BuffDataTrans(DisplayBuffer, i*2);
   \   0157  C3E801            JP      ?0025
   \   015A  29                ADD     HL,HL
   \   015B  C3EF01            JP      ?0026
   \   015E  110000            LD      DE,DisplayBuffer
   \   0161  C3F401            JP      ?0027
    105              }
    106              else
   \   0164  C3F701            JP      ?0009
   \   0167            ?0005:
    107              {
    108                  sregiony_tmp = sregionram.y;
   \   0167  DD46EF            LD      B,(IX-17)
   \   016A  DD70FB            LD      (IX-5),B
    109                  tregiony_tmp = tregionram.y;
   \   016D  DD46F3            LD      B,(IX-13)
   \   0170  DD70FA            LD      (IX-6),B
   \   0173            ?0011:
    110            
    111          
    112                  //源在目标的上面时,要从下面开始读数据(这样不会覆盖)
    113                  while (line_cnt > block_line)
   \   0173  DD7EF9            LD      A,(IX-7)
   \   0176  DDBEF8            CP      (IX-8)
   \   0179  303D              JR      NC,?0010
   \   017B            ?0012:
    114                  {
    115                      //读出对应区域的图片内容放在暂存中
    116                      sregionram.y = sregiony_tmp + (line_cnt - block_line);//从下面开始读
   \   017B  DD7EF8            LD      A,(IX-8)
   \   017E  DD96F9            SUB     (IX-7)
   \   0181  DD86FB            ADD     A,(IX-5)
   \   0184  DD77EF            LD      (IX-17),A
    117                      tregionram.y = tregiony_tmp + (line_cnt - block_line); 
   \   0187  DD7EF8            LD      A,(IX-8)
   \   018A  DD96F9            SUB     (IX-7)
   \   018D  DD86FA            ADD     A,(IX-6)
   \   0190  DD77F3            LD      (IX-13),A
    118                      Hdrv_SetWindow(&sregionram);
   \   0193  210000            LD      HL,0
   \   0196  39                ADD     HL,SP
   \   0197  EB                EX      DE,HL
   \   0198  CD0000            CALL    Hdrv_SetWindow
    119                      Hdrv_GetBuffData (DisplayBuffer, block_pixel, NORTransMode_def);
   \   019B  210000            LD      HL,0
   \   019E  E5                PUSH    HL
   \   019F  FDE5              PUSH    IY
   \   01A1  C1                POP     BC
   \   01A2  110000            LD      DE,DisplayBuffer
   \   01A5  CD0000            CALL    Hdrv_GetBuffData
   \   01A8  F1                POP     AF
    120                      
    121                      //把暂时显存区的数据送到LCM
    122                      Hdrv_SetWindow(&tregionram);
   \   01A9  210400            LD      HL,4
   \   01AC  39                ADD     HL,SP
   \   01AD  CD1A02            CALL    ?0029
    123                      Hdrv_BuffDataTrans(DisplayBuffer, block_pixel*2);    
    124                                  
    125                      line_cnt -= block_line;
   \   01B0  39                ADD     HL,SP
   \   01B1  7E                LD      A,(HL)
   \   01B2  DD96F9            SUB     (IX-7)
   \   01B5  77                LD      (HL),A
   \   01B6  18BB              JR      ?0011
   \   01B8            ?0010:
    126                  }
    127          
    128                  i = sregionram.width * line_cnt;//余下的象素个数
   \   01B8  CDFE01            CALL    ?0028
    129          
    130                  sregionram.height = line_cnt;
    131                  tregionram.height = line_cnt;
    132                  sregionram.y = sregiony_tmp;
   \   01BB  DD46FB            LD      B,(IX-5)
   \   01BE  DD70EF            LD      (IX-17),B
    133                  tregionram.y = tregiony_tmp;
   \   01C1  DD46FA            LD      B,(IX-6)
   \   01C4  DD70F3            LD      (IX-13),B
    134          
    135                  //读出余下不足一个块的区域内容
    136                  Hdrv_SetWindow(&sregionram);
   \   01C7            ?0018:
   \   01C7  210000            LD      HL,0
   \   01CA  39                ADD     HL,SP
   \   01CB            ?0019:
   \   01CB  EB                EX      DE,HL
   \   01CC  CD0000            CALL    Hdrv_SetWindow
    137                  Hdrv_GetBuffData(DisplayBuffer, i, NORTransMode_def);                                       
   \   01CF            ?0020:
   \   01CF  210000            LD      HL,0
   \   01D2  E5                PUSH    HL
   \   01D3            ?0021:
   \   01D3  DD4EF6            LD      C,(IX-10)
   \   01D6  DD46F7            LD      B,(IX-9)
   \   01D9  110000            LD      DE,DisplayBuffer
   \   01DC            ?0022:
   \   01DC  CD0000            CALL    Hdrv_GetBuffData
   \   01DF  F1                POP     AF
    138                  
    139                  //把暂时显存区的数据送到LCM
    140                  Hdrv_SetWindow(&tregionram);
   \   01E0            ?0023:
   \   01E0  210400            LD      HL,4
   \   01E3  39                ADD     HL,SP
   \   01E4            ?0024:
   \   01E4  EB                EX      DE,HL
   \   01E5  CD0000            CALL    Hdrv_SetWindow
    141                  Hdrv_BuffDataTrans(DisplayBuffer, i*2);        
   \   01E8            ?0025:
   \   01E8  DD6EF6            LD      L,(IX-10)
   \   01EB  DD66F7            LD      H,(IX-9)
   \   01EE  29                ADD     HL,HL
   \   01EF            ?0026:
   \   01EF  4D                LD      C,L
   \   01F0  44                LD      B,H
   \   01F1  110000            LD      DE,DisplayBuffer
   \   01F4            ?0027:
   \   01F4  CD0000            CALL    Hdrv_BuffDataTrans
   \   01F7            ?0009:
    142              }    
    143              
    144          
    145          }
   \   01F7            ?0013:
   \   01F7  DDF9              LD      SP,IX
   \   01F9  DDE1              POP     IX
   \   01FB  FDE1              POP     IY
   \   01FD  C9                RET
   \   01FE            ?0028:
   \   01FE  DD4EF0            LD      C,(IX-16)
   \   0201  0600              LD      B,0
   \   0203  50                LD      D,B
   \   0204  DD5EF8            LD      E,(IX-8)
   \   0207  CD0000            CALL    ?S_MUL_L02
   \   020A  DD73F6            LD      (IX-10),E
   \   020D  DD72F7            LD      (IX-9),D
   \   0210  DD46F8            LD      B,(IX-8)
   \   0213  DD70F1            LD      (IX-15),B
   \   0216  DD70F5            LD      (IX-11),B
   \   0219  C9                RET
   \   021A            ?0029:
   \   021A  EB                EX      DE,HL
   \   021B  CD0000            CALL    Hdrv_SetWindow
   \   021E  FDE5              PUSH    IY
   \   0220  E1                POP     HL
   \   0221  29                ADD     HL,HL
   \   0222  4D                LD      C,L
   \   0223  44                LD      B,H
   \   0224  110000            LD      DE,DisplayBuffer
   \   0227  CD0000            CALL    Hdrv_BuffDataTrans
   \   022A  210A00            LD      HL,10
   \   022D  C9                RET
    146          
   \   022E                    END

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

⌨️ 快捷键说明

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