sdrv_charoutrect_latin1.lst

来自「MP3 整个 SDK」· LST 代码 · 共 431 行 · 第 1/2 页

LST
431
字号
   \   0089  4D                LD      C,L
   \   008A  44                LD      B,H
   \   008B  FD6E02            LD      L,(IY+2)
   \   008E  2600              LD      H,0
   \   0090  F680              OR      128
   \   0092  ED42              SBC     HL,BC
   \   0094  E29800            JP      PO,?0024
   \   0097  AC                XOR     H
   \   0098            ?0024:
   \   0098  F2A000            JP      P,?0013
   \   009B  FD7E02            LD      A,(IY+2)
   \   009E  1805              JR      ?0014
   \   00A0            ?0013:
   \   00A0  3E08              LD      A,8
   \   00A2  DD9606            SUB     (IX+6)
   \   00A5            ?0014:
   \   00A5  DD77FC            LD      (IX-4),A
    104          
    105                  //把黑白字模转为彩色字模放在Buff中(上区)
    106                  //BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer);
    107                  BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer + ASCII_LARGE_WIDTH_DEF);
   \   00A8  010800            LD      BC,CharPointBuffer+8
   \   00AB  110800            LD      DE,8
   \   00AE  CD7601            CALL    ?0038
    108                  //把暂时显存区的数据送到LCM
    109                  Hdrv_BuffDataTrans(DisplayBuffer+colcnt*(ASCII_LARGE_HEIGHT_DEF/2)*2,
    110                                                  (ASCII_LARGE_HEIGHT_DEF/2)*tmpwidth*2);
    111          
    112                  region.y += ASCII_LARGE_HEIGHT_DEF/2;//Y坐标加8准备输出下区(下半个字)
   \   00B1  3A0100            LD      A,(region+1)
   \   00B4  C608              ADD     A,8
   \   00B6  320100            LD      (region+1),A
    113                  Hdrv_SetWindow(&region);        
   \   00B9  CD7001            CALL    ?0036
    114                  //BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer + ASCII_LARGE_WIDTH_DEF);
    115                  BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer);
   \   00BC  010000            LD      BC,CharPointBuffer
   \   00BF  110800            LD      DE,8
   \   00C2  C34701            JP      ?0033
    116                  //把暂时显存区的数据送到LCM
    117                  Hdrv_BuffDataTrans(DisplayBuffer+colcnt*(ASCII_LARGE_HEIGHT_DEF/2)*2, 
    118                                                  (ASCII_LARGE_HEIGHT_DEF/2)*tmpwidth*2);
    119                  //坐标移到下一个字的左上角
    120                  //region.x += ASCII_LARGE_WIDTH_DEF;
    121                  //region.y -= ASCII_LARGE_HEIGHT_DEF/2;
    122                  break;
   \   00C5            ?0015:
   \   00C5  FE02              CP      2
   \   00C7  C24A01            JP      NZ,?0002
    123              
    124              case CharMode1616://16*16点阵模式(汉字)
    125                  //设置字模输出的大小(上半个汉字)
    126                  if (colcnt >= 16)
   \   00CA  DD7E06            LD      A,(IX+6)
   \   00CD  FE10              CP      16
   \   00CF  3809              JR      C,?0017
   \   00D1            ?0016:
    127                  {//计数值超出
    128                      Hdrv_SetDrawMode(DrawModeH_def);    //把显示模式设置成横向显示模
   \   00D1            ?0032:
   \   00D1  110000            LD      DE,0
   \   00D4  CD0000            CALL    Hdrv_SetDrawMode
    129                      return FALSE;
   \   00D7            ?0031:
   \   00D7  AF                XOR     A
    130                  }
   \   00D8  1878              JR      ?0022
   \   00DA            ?0017:
    131                  //确定输出区域
    132                  region.x = CRregion->x;
    133                  region.y = CRregion->y;
    134                  region.width = CRregion->width;
    135                  region.height = CHINESE_HEIGHT_DEF1-8;
    136                  Hdrv_SetWindow(&region);
   \   00DA  CD5901            CALL    ?0035
    137          
    138                  //取最小的值.
    139                  tmpwidth = (CRregion->width < (16-colcnt))? (CRregion->width):(16-colcnt); 
   \   00DD  DD4E06            LD      C,(IX+6)
   \   00E0  0600              LD      B,0
   \   00E2  211000            LD      HL,16
   \   00E5  A7                AND     A
   \   00E6  ED42              SBC     HL,BC
   \   00E8  4D                LD      C,L
   \   00E9  44                LD      B,H
   \   00EA  FD6E02            LD      L,(IY+2)
   \   00ED  2600              LD      H,0
   \   00EF  F680              OR      128
   \   00F1  ED42              SBC     HL,BC
   \   00F3  E2F700            JP      PO,?0025
   \   00F6  AC                XOR     H
   \   00F7            ?0025:
   \   00F7  F2FF00            JP      P,?0019
   \   00FA  FD7E02            LD      A,(IY+2)
   \   00FD  1805              JR      ?0020
   \   00FF            ?0019:
   \   00FF  3E10              LD      A,16
   \   0101  DD9606            SUB     (IX+6)
   \   0104            ?0020:
   \   0104  DD77FC            LD      (IX-4),A
    140          
    141                  //把黑白字模转为彩色字模放在Buff中
    142                  putCharChFlag=8;
   \   0107  3E08              LD      A,8
   \   0109  320000            LD      (putCharChFlag),A
    143                  BlackCharToColor(CHINESE_WIDTH_DEF1, CharPointBuffer + CHINESE_WIDTH_DEF1);//+8
   \   010C  011000            LD      BC,CharPointBuffer+16
   \   010F  111000            LD      DE,16
   \   0112  CD0000            CALL    BlackCharToColor
    144                  putCharChFlag=8; 
   \   0115  3E08              LD      A,8
   \   0117  320000            LD      (putCharChFlag),A
    145                  //BlackCharToColor(CHINESE_WIDTH_DEF, CharPointBuffer);
    146          
    147                  //把暂时显存区的数据送到LCM
    148                  Hdrv_BuffDataTrans(DisplayBuffer+colcnt*(CHINESE_HEIGHT_DEF1-8)*2, 
    149                                                  (CHINESE_HEIGHT_DEF1-8)*tmpwidth*2);        
   \   011A  DD6EFC            LD      L,(IX-4)
   \   011D  2600              LD      H,0
   \   011F  29                ADD     HL,HL
   \   0120  29                ADD     HL,HL
   \   0121  29                ADD     HL,HL
   \   0122  29                ADD     HL,HL
   \   0123  4D                LD      C,L
   \   0124  44                LD      B,H
   \   0125  DD6E06            LD      L,(IX+6)
   \   0128  2600              LD      H,0
   \   012A  29                ADD     HL,HL
   \   012B  29                ADD     HL,HL
   \   012C  29                ADD     HL,HL
   \   012D  29                ADD     HL,HL
   \   012E  110000            LD      DE,DisplayBuffer
   \   0131  19                ADD     HL,DE
   \   0132  EB                EX      DE,HL
   \   0133  CD0000            CALL    Hdrv_BuffDataTrans
    150                  region.y += CHINESE_HEIGHT_DEF1-8;//Y坐标加8准备输出下区(下半个汉字) 8
   \   0136  3A0100            LD      A,(region+1)
   \   0139  C608              ADD     A,8
   \   013B  320100            LD      (region+1),A
    151                  region.height = CHINESE_HEIGHT_DEF1-8;
    152                  Hdrv_SetWindow(&region);        
   \   013E  CD6B01            CALL    ?0037
    153                  //BlackCharToColor(CHINESE_WIDTH_DEF, CharPointBuffer + CHINESE_WIDTH_DEF);        
    154                  BlackCharToColor(CHINESE_WIDTH_DEF1, CharPointBuffer);
   \   0141  010000            LD      BC,CharPointBuffer
   \   0144  111000            LD      DE,16
   \   0147            ?0033:
   \   0147  CD7601            CALL    ?0038
    155                  //把暂时显存区的数据送到LCM
    156                  Hdrv_BuffDataTrans(DisplayBuffer+colcnt*(CHINESE_HEIGHT_DEF1-8)*2, 
    157                                                  (CHINESE_HEIGHT_DEF1-8)*tmpwidth*2);
    158                                                                  
    159                  break;
   \   014A            ?0021:
    160                  
    161              default:
    162                  break;
   \   014A            ?0002:
    163              }
    164              Hdrv_SetDrawMode(DrawModeH_def);    //把显示模式设置成横向显示模
   \   014A  110000            LD      DE,0
   \   014D  CD0000            CALL    Hdrv_SetDrawMode
    165              return TRUE;
   \   0150  3E01              LD      A,1
    166          
    167          
    168          }
   \   0152            ?0022:
   \   0152  DDF9              LD      SP,IX
   \   0154  DDE1              POP     IX
   \   0156  FDE1              POP     IY
   \   0158  C9                RET
   \   0159            ?0035:
   \   0159  FD7E00            LD      A,(IY+0)
   \   015C  320000            LD      (region),A
   \   015F  FD7E01            LD      A,(IY+1)
   \   0162  320100            LD      (region+1),A
   \   0165  FD7E02            LD      A,(IY+2)
   \   0168  320200            LD      (region+2),A
   \   016B            ?0037:
   \   016B  3E08              LD      A,8
   \   016D  320300            LD      (region+3),A
   \   0170            ?0036:
   \   0170  110000            LD      DE,region
   \   0173  C30000            JP      Hdrv_SetWindow
   \   0176            ?0038:
   \   0176  CD0000            CALL    BlackCharToColor
   \   0179  DD6EFC            LD      L,(IX-4)
   \   017C  2600              LD      H,0
   \   017E  29                ADD     HL,HL
   \   017F  29                ADD     HL,HL
   \   0180  29                ADD     HL,HL
   \   0181  29                ADD     HL,HL
   \   0182  4D                LD      C,L
   \   0183  44                LD      B,H
   \   0184  DD6E06            LD      L,(IX+6)
   \   0187  2600              LD      H,0
   \   0189  29                ADD     HL,HL
   \   018A  29                ADD     HL,HL
   \   018B  29                ADD     HL,HL
   \   018C  29                ADD     HL,HL
   \   018D  110000            LD      DE,DisplayBuffer
   \   0190  19                ADD     HL,DE
   \   0191  EB                EX      DE,HL
   \   0192  CD0000            CALL    Hdrv_BuffDataTrans
   \   0195  C9                RET
   \   0196                    END

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

⌨️ 快捷键说明

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