sdrv_charoutrect_thai.lst

来自「一种彩屏驱动以及画点,填充图片和填充数据的一些程序」· LST 代码 · 共 382 行 · 第 1/2 页

LST
382
字号
     83                  //把黑白字模转为彩色字模放在Buff中
     84                  BlackCharToColor(ASCII_SMALL_WIDTH_DEF, CharPointBuffer);
   \   008D  010000            LD      BC,CharPointBuffer
   \   0090  110600            LD      DE,6
   \   0093  186E              JR      ?0019
     85                  //把暂时显存区的数据送到LCM
     86                  Hdrv_BuffDataTrans(DisplayBuffer+colcnt*ASCII_SMALL_HEIGHT_DEF*2, 
     87                                                  ASCII_SMALL_HEIGHT_DEF*tmpwidth*2);
     88          
     89                  //region.x += ASCII_SMALL_WIDTH_DEF;//坐标移到下一个字的左上角
     90                  break;
   \   0095            ?0009:
   \   0095  FE01              CP      1
   \   0097  206D              JR      NZ,?0002
     91                  
     92              case CharMode0816://08*16点阵模式(ascii大字体)
     93                  //设置字模输出的大小//上半个字
     94                  //region.width = ASCII_LARGE_WIDTH_DEF;
     95                  if (colcnt >= 8)
   \   0099  DD7E06            LD      A,(IX+6)
   \   009C  FE08              CP      8
   \   009E  3809              JR      C,?0011
   \   00A0            ?0010:
     96                  {//计数值超出
     97                      Hdrv_SetDrawMode(DrawModeH_def);    //把显示模式设置成横向显示模
   \   00A0            ?0022:
   \   00A0  110000            LD      DE,0
   \   00A3  CD0000            CALL    Hdrv_SetDrawMode
     98                      return FALSE;
   \   00A6            ?0021:
   \   00A6  AF                XOR     A
     99                  }
   \   00A7  1865              JR      ?0016
   \   00A9            ?0011:
    100                  //确定输出区域
    101                  //region.x = CRregion->x;
    102                  //region.y = CRregion->y;
    103                  //region.width = CRregion->width;
    104                  region.height = ASCII_LARGE_HEIGHT_DEF/2;
   \   00A9  3E08              LD      A,8
   \   00AB  320300            LD      (region+3),A
    105                  region.y += ASCII_LARGE_HEIGHT_DEF/2;//Y坐标加8准备输出下区(下半个字) 
   \   00AE  3A0100            LD      A,(region+1)
   \   00B1  C608              ADD     A,8
   \   00B3  320100            LD      (region+1),A
    106                  Hdrv_SetWindow(&region);
   \   00B6  110000            LD      DE,region
   \   00B9  CD0000            CALL    Hdrv_SetWindow
    107          
    108                  //取最小的值.
    109                  tmpwidth = (CRregion->width < (8-colcnt))? (CRregion->width):(8-colcnt);
   \   00BC  DD4E06            LD      C,(IX+6)
   \   00BF  0600              LD      B,0
   \   00C1  210800            LD      HL,8
   \   00C4  A7                AND     A
   \   00C5  ED42              SBC     HL,BC
   \   00C7  4D                LD      C,L
   \   00C8  44                LD      B,H
   \   00C9  FD6E02            LD      L,(IY+2)
   \   00CC  2600              LD      H,0
   \   00CE  F680              OR      128
   \   00D0  ED42              SBC     HL,BC
   \   00D2  E2D600            JP      PO,?0018
   \   00D5  AC                XOR     H
   \   00D6            ?0018:
   \   00D6  F2DE00            JP      P,?0013
   \   00D9  FD7E02            LD      A,(IY+2)
   \   00DC  1805              JR      ?0014
   \   00DE            ?0013:
   \   00DE  3E08              LD      A,8
   \   00E0  DD9606            SUB     (IX+6)
   \   00E3            ?0014:
   \   00E3  DD77FC            LD      (IX-4),A
    110          
    111                  //把黑白字模转为彩色字模放在Buff中(上区)
    112                  //BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer);
    113                  BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer + ASCII_LARGE_WIDTH_DEF);
   \   00E6  010800            LD      BC,CharPointBuffer+8
   \   00E9  110800            LD      DE,8
   \   00EC  CD1501            CALL    ?0023
    114                  //把暂时显存区的数据送到LCM
    115                  Hdrv_BuffDataTrans(DisplayBuffer+colcnt*(ASCII_LARGE_HEIGHT_DEF/2)*2,
    116                                                  (ASCII_LARGE_HEIGHT_DEF/2)*tmpwidth*2);
    117          
    118                  region.y -= ASCII_LARGE_HEIGHT_DEF/2;//Y坐标加8准备输出下区(下半个字)
   \   00EF  3A0100            LD      A,(region+1)
   \   00F2  C6F8              ADD     A,248
   \   00F4  320100            LD      (region+1),A
    119                  Hdrv_SetWindow(&region);        
   \   00F7  110000            LD      DE,region
   \   00FA  CD0000            CALL    Hdrv_SetWindow
    120                  //BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer + ASCII_LARGE_WIDTH_DEF);
    121                  BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer);
   \   00FD  010000            LD      BC,CharPointBuffer
   \   0100  110800            LD      DE,8
   \   0103            ?0019:
   \   0103  CD1501            CALL    ?0023
    122                  //把暂时显存区的数据送到LCM
    123                  Hdrv_BuffDataTrans(DisplayBuffer+colcnt*(ASCII_LARGE_HEIGHT_DEF/2)*2, 
    124                                                  (ASCII_LARGE_HEIGHT_DEF/2)*tmpwidth*2);
    125                  //坐标移到下一个字的左上角
    126                  //region.x += ASCII_LARGE_WIDTH_DEF;
    127                  //region.y -= ASCII_LARGE_HEIGHT_DEF/2;
    128                  break;
   \   0106            ?0015:
    129          #if  0    
    130              case CharMode1616://16*16点阵模式(汉字)
    131                  //设置字模输出的大小(上半个汉字)
    132                  if (colcnt >= 16)
    133                  {//计数值超出
    134                      Hdrv_SetDrawMode(DrawModeH_def);    //把显示模式设置成横向显示模
    135                      return FALSE;
    136                  }
    137                  //确定输出区域
    138                  region.x = CRregion->x;
    139                  region.y = CRregion->y;
    140                  region.width = CRregion->width;
    141                  region.height = CHINESE_HEIGHT_DEF/2;
    142                  region.y += CHINESE_HEIGHT_DEF/2;//Y坐标加8准备输出下区(下半个汉字)
    143                  Hdrv_SetWindow(&region);
    144          
    145                  //取最小的值.
    146                  tmpwidth = (CRregion->width < (16-colcnt))? (CRregion->width):(16-colcnt); 
    147          
    148                  //把黑白字模转为彩色字模放在Buff中
    149                  //putCharChFlag=4;
    150                  BlackCharToColor(CHINESE_WIDTH_DEF, CharPointBuffer + CHINESE_WIDTH_DEF);
    151                  //putCharChFlag=8; 
    152                  //BlackCharToColor(CHINESE_WIDTH_DEF, CharPointBuffer);
    153          
    154                  //把暂时显存区的数据送到LCM
    155                  Hdrv_BuffDataTrans(DisplayBuffer+colcnt*(CHINESE_HEIGHT_DEF/2)*2, 
    156                                                  (CHINESE_HEIGHT_DEF/2)*tmpwidth*2);        
    157                  region.y -= CHINESE_HEIGHT_DEF/2;//Y坐标加8准备输出下区(下半个汉字)
    158                  region.height = CHINESE_HEIGHT_DEF/2;
    159                  Hdrv_SetWindow(&region);        
    160                  //BlackCharToColor(CHINESE_WIDTH_DEF, CharPointBuffer + CHINESE_WIDTH_DEF);        
    161                  BlackCharToColor(CHINESE_WIDTH_DEF, CharPointBuffer);
    162                  //把暂时显存区的数据送到LCM
    163                  Hdrv_BuffDataTrans(DisplayBuffer+colcnt*(CHINESE_HEIGHT_DEF/2)*2, 
    164                                                  (CHINESE_HEIGHT_DEF/2)*tmpwidth*2);
    165                                                                  
    166                  break;
    167          #endif        
    168              default:
    169                  break;
   \   0106            ?0002:
    170              }
    171              Hdrv_SetDrawMode(DrawModeH_def);    //把显示模式设置成横向显示模
   \   0106  110000            LD      DE,0
   \   0109  CD0000            CALL    Hdrv_SetDrawMode
    172              return TRUE;
   \   010C  3E01              LD      A,1
    173          
    174          
    175          }
   \   010E            ?0016:
   \   010E  DDF9              LD      SP,IX
   \   0110  DDE1              POP     IX
   \   0112  FDE1              POP     IY
   \   0114  C9                RET
   \   0115            ?0023:
   \   0115  CD0000            CALL    BlackCharToColor
   \   0118  DD6EFC            LD      L,(IX-4)
   \   011B  2600              LD      H,0
   \   011D  29                ADD     HL,HL
   \   011E  29                ADD     HL,HL
   \   011F  29                ADD     HL,HL
   \   0120  29                ADD     HL,HL
   \   0121  4D                LD      C,L
   \   0122  44                LD      B,H
   \   0123  DD6E06            LD      L,(IX+6)
   \   0126  2600              LD      H,0
   \   0128  29                ADD     HL,HL
   \   0129  29                ADD     HL,HL
   \   012A  29                ADD     HL,HL
   \   012B  29                ADD     HL,HL
   \   012C  110000            LD      DE,DisplayBuffer
   \   012F  19                ADD     HL,DE
   \   0130  EB                EX      DE,HL
   \   0131  CD0000            CALL    Hdrv_BuffDataTrans
   \   0134  C9                RET
   \   0135                    END

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

⌨️ 快捷键说明

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