sdrv_putchar_thai.lst

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

LST
349
字号
   \   0079            ?0004:
   \   0079  FE01              CP      1
   \   007B  C20C01            JP      NZ,?0013
     70                  
     71              case CharMode0816://08*16点阵模式(ascii大字体)
     72                  //设置字模输出的大小//上半个字
     73                  region.width = ASCII_LARGE_WIDTH_DEF;
   \   007E  3E08              LD      A,8
   \   0080  320200            LD      (region+2),A
     74                  
     75                  if(SFlag == 5)
   \   0083  3A0000            LD      A,(SFlag)
   \   0086  FE05              CP      5
   \   0088  2016              JR      NZ,?0006
   \   008A            ?0005:
     76                  {
     77                      region.height = 5;
   \   008A  3E05              LD      A,5
   \   008C  320300            LD      (region+3),A
     78                      Hdrv_SetWindow(&region);       
   \   008F  CD1C01            CALL    ?0022
     79                      BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer);
   \   0092  010000            LD      BC,CharPointBuffer
   \   0095  110800            LD      DE,8
   \   0098  CD0000            CALL    BlackCharToColor
     80                      Hdrv_BuffDataTrans(DisplayBuffer, ASCII_LARGE_WIDTH_DEF*5*2);
   \   009B  015000            LD      BC,80
   \   009E  1852              JR      ?0019
   \   00A0            ?0006:
     81                   }
     82                   else if(SFlag == 3)
   \   00A0  FE03              CP      3
   \   00A2  201B              JR      NZ,?0009
   \   00A4            ?0008:
     83                   {
     84                      region.height = 3;
   \   00A4  3E03              LD      A,3
   \   00A6  320300            LD      (region+3),A
     85                      region.y += 13;
   \   00A9  3A0100            LD      A,(region+1)
   \   00AC  C60D              ADD     A,13
     86                      Hdrv_SetWindow(&region);
   \   00AE  CD1901            CALL    ?0023
     87                      BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer + ASCII_LARGE_WIDTH_DEF);        //change by ybfu
   \   00B1  010800            LD      BC,CharPointBuffer+8
   \   00B4  110800            LD      DE,8
   \   00B7  CD0000            CALL    BlackCharToColor
     88                      //把暂时显存区的数据送到LCM
     89                      Hdrv_BuffDataTrans(DisplayBuffer, ASCII_LARGE_WIDTH_DEF*3*2);
   \   00BA  013000            LD      BC,48
   \   00BD  1833              JR      ?0019
     90                      //region.y -= 13;
     91                   }
     92                   else
   \   00BF            ?0009:
     93                  {
     94                      region.height = ASCII_LARGE_HEIGHT_DEF/2;
   \   00BF  3E08              LD      A,8
   \   00C1  320300            LD      (region+3),A
     95                      region.y += ASCII_LARGE_HEIGHT_DEF/2;//Y坐标加8准备输出下区(下半个字)
   \   00C4  3A0100            LD      A,(region+1)
   \   00C7  C608              ADD     A,8
     96                      Hdrv_SetWindow(&region);
   \   00C9  CD1901            CALL    ?0023
     97                      //把黑白字模转为彩色字模放在Buff中(上区)
     98                      BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer + ASCII_LARGE_WIDTH_DEF);        //change by ybfu
   \   00CC  010800            LD      BC,CharPointBuffer+8
   \   00CF  110800            LD      DE,8
   \   00D2  CD0000            CALL    BlackCharToColor
     99                      //把暂时显存区的数据送到LCM
    100                      Hdrv_BuffDataTrans(DisplayBuffer, ASCII_LARGE_WIDTH_DEF*(ASCII_LARGE_HEIGHT_DEF/2)*2);
   \   00D5  018000            LD      BC,128
   \   00D8  110000            LD      DE,DisplayBuffer
   \   00DB  CD0000            CALL    Hdrv_BuffDataTrans
    101          
    102                      region.y -= ASCII_LARGE_HEIGHT_DEF/2;//Y坐标减8准备输出上区(上半个字)
   \   00DE  3A0100            LD      A,(region+1)
   \   00E1  C6F8              ADD     A,248
    103                      Hdrv_SetWindow(&region);        
   \   00E3  CD1901            CALL    ?0023
    104                      BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer);
   \   00E6  010000            LD      BC,CharPointBuffer
   \   00E9  110800            LD      DE,8
   \   00EC  CD0000            CALL    BlackCharToColor
    105                      //把暂时显存区的数据送到LCM
    106                      Hdrv_BuffDataTrans(DisplayBuffer, ASCII_LARGE_WIDTH_DEF*(ASCII_LARGE_HEIGHT_DEF/2)*2);
   \   00EF  018000            LD      BC,128
   \   00F2            ?0019:
   \   00F2  110000            LD      DE,DisplayBuffer
   \   00F5  CD0000            CALL    Hdrv_BuffDataTrans
   \   00F8            ?0010:
   \   00F8            ?0007:
    107                  }     
    108                  
    109                  //坐标移到下一个字的左上角     
    110                  if(NextSFlag == 0)
   \   00F8  3A0000            LD      A,(NextSFlag)
   \   00FB  B7                OR      A
   \   00FC  200A              JR      NZ,?0012
   \   00FE            ?0011:
    111                  {   
    112                      region.x += ASCII_LARGE_WIDTH_DEF;
   \   00FE  3A0000            LD      A,(region)
   \   0101  C608              ADD     A,8
   \   0103            ?0021:
   \   0103  320000            LD      (region),A
    113                   }   
    114                  else 
   \   0106  1804              JR      ?0013
   \   0108            ?0012:
    115                   NextSFlag = 0;    //如果是符号,X坐标不增加
   \   0108  AF                XOR     A
   \   0109  320000            LD      (NextSFlag),A
   \   010C            ?0013:
    116                  //region.y -= ASCII_LARGE_HEIGHT_DEF/2;
    117                  break;
   \   010C            ?0014:
    118          #if 0    
    119              case CharMode1616://16*16点阵模式(汉字)
    120                  //设置字模输出的大小(上半个汉字)
    121                  region.width = CHINESE_WIDTH_DEF;
    122                  region.height = CHINESE_HEIGHT_DEF/2;
    123              region.y += CHINESE_HEIGHT_DEF/2;//Y坐标加8准备输出下区(下半个汉字)
    124              
    125                  Hdrv_SetWindow(&region);
    126          
    127                  //把黑白字模转为彩色字模放在Buff中
    128                  //putCharChFlag=8;
    129                  BlackCharToColor(CHINESE_WIDTH_DEF, CharPointBuffer + CHINESE_WIDTH_DEF);    //change by ybfu
    130                  //putCharChFlag=8;
    131                  //把暂时显存区的数据送到LCM
    132                  Hdrv_BuffDataTrans(DisplayBuffer, (CHINESE_HEIGHT_DEF/2)*CHINESE_WIDTH_DEF*2);        
    133                  region.y -= CHINESE_HEIGHT_DEF/2;//Y坐标加8准备输出下区(下半个汉字)
    134                  region.height = CHINESE_HEIGHT_DEF/2;
    135                  Hdrv_SetWindow(&region);        
    136                  BlackCharToColor(CHINESE_WIDTH_DEF, CharPointBuffer);        
    137                  
    138                  //把暂时显存区的数据送到LCM
    139                  Hdrv_BuffDataTrans(DisplayBuffer, (CHINESE_HEIGHT_DEF/2)*CHINESE_WIDTH_DEF*2);
    140                                                                  
    141                  //坐标移到下一个字的左上角
    142                  region.x += CHINESE_WIDTH_DEF;
    143                  //region.y -= CHINESE_HEIGHT_DEF/2;
    144                  break;
    145          #endif        
    146              default:
    147                  break;
   \   010C            ?0002:
    148              }
    149              Hdrv_SetDrawMode(DrawModeH_def);    //把显示模式设置成横向显示模
   \   010C  110000            LD      DE,0
   \   010F  CD0000            CALL    Hdrv_SetDrawMode
    150              return TRUE;
   \   0112  3E01              LD      A,1
    151          }
   \   0114            ?0015:
   \   0114  E1                POP     HL
   \   0115  DDE1              POP     IX
   \   0117  C1                POP     BC
   \   0118  C9                RET
   \   0119            ?0023:
   \   0119  320100            LD      (region+1),A
   \   011C            ?0022:
   \   011C  110000            LD      DE,region
   \   011F  C30000            JP      Hdrv_SetWindow
   \   0122                    END

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

⌨️ 快捷键说明

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