sdrv_charoutrect_latin1.lst

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

LST
440
字号
    103                  tmpwidth = (CRregion->width < (8-colcnt))? (CRregion->width):(8-colcnt);
   \   009C  DD4E06            LD      C,(IX+6)
   \   009F  0600              LD      B,0
   \   00A1  210800            LD      HL,8
   \   00A4  A7                AND     A
   \   00A5  ED42              SBC     HL,BC
   \   00A7  4D                LD      C,L
   \   00A8  44                LD      B,H
   \   00A9  FD6E02            LD      L,(IY+2)
   \   00AC  2600              LD      H,0
   \   00AE  F680              OR      128
   \   00B0  ED42              SBC     HL,BC
   \   00B2  E2B600            JP      PO,?0024
   \   00B5  AC                XOR     H
   \   00B6            ?0024:
   \   00B6  F2BE00            JP      P,?0013
   \   00B9  FD7E02            LD      A,(IY+2)
   \   00BC  1805              JR      ?0014
   \   00BE            ?0013:
   \   00BE  3E08              LD      A,8
   \   00C0  DD9606            SUB     (IX+6)
   \   00C3            ?0014:
   \   00C3  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);
   \   00C6  010800            LD      BC,CharPointBuffer+8
   \   00C9  110800            LD      DE,8
   \   00CC  CD8801            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准备输出下区(下半个字)
    113                  Hdrv_SetWindow(&region);        
   \   00CF  CD7F01            CALL    ?0037
    114                  //BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer + ASCII_LARGE_WIDTH_DEF);
    115                  BlackCharToColor(ASCII_LARGE_WIDTH_DEF, CharPointBuffer);
   \   00D2  010000            LD      BC,CharPointBuffer
   \   00D5  110800            LD      DE,8
   \   00D8  185B              JR      ?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;
   \   00DA            ?0015:
   \   00DA  FE02              CP      2
   \   00DC  2076              JR      NZ,?0002
    123              
    124              case CharMode1616://16*16点阵模式(汉字)
    125                  //设置字模输出的大小(上半个汉字)
    126                  if (colcnt >= 16)
   \   00DE  DD7E06            LD      A,(IX+6)
   \   00E1  FE10              CP      16
   \   00E3  3809              JR      C,?0017
   \   00E5            ?0016:
    127                  {//计数值超出
    128                      Hdrv_SetDrawMode(DrawModeH_def);    //把显示模式设置成横向显示模
   \   00E5            ?0032:
   \   00E5  110000            LD      DE,0
   \   00E8  CD0000            CALL    Hdrv_SetDrawMode
    129                      return FALSE;
   \   00EB            ?0031:
   \   00EB  AF                XOR     A
    130                  }
   \   00EC  186E              JR      ?0022
   \   00EE            ?0017:
    131                  //确定输出区域
    132                  region.x = CRregion->x;
    133                  region.y = CRregion->y;
    134                  region.width = CRregion->width;
    135                  region.height = CHINESE_HEIGHT_DEF/2;
    136                  region.y += CHINESE_HEIGHT_DEF/2;//Y坐标加8准备输出下区(下半个汉字)
    137                  Hdrv_SetWindow(&region);
   \   00EE  CD6301            CALL    ?0036
    138          
    139                  //取最小的值.
    140                  tmpwidth = (CRregion->width < (16-colcnt))? (CRregion->width):(16-colcnt); 
   \   00F1  DD4E06            LD      C,(IX+6)
   \   00F4  0600              LD      B,0
   \   00F6  211000            LD      HL,16
   \   00F9  A7                AND     A
   \   00FA  ED42              SBC     HL,BC
   \   00FC  4D                LD      C,L
   \   00FD  44                LD      B,H
   \   00FE  FD6E02            LD      L,(IY+2)
   \   0101  2600              LD      H,0
   \   0103  F680              OR      128
   \   0105  ED42              SBC     HL,BC
   \   0107  E20B01            JP      PO,?0025
   \   010A  AC                XOR     H
   \   010B            ?0025:
   \   010B  F21301            JP      P,?0019
   \   010E  FD7E02            LD      A,(IY+2)
   \   0111  1805              JR      ?0020
   \   0113            ?0019:
   \   0113  3E10              LD      A,16
   \   0115  DD9606            SUB     (IX+6)
   \   0118            ?0020:
   \   0118  DD77FC            LD      (IX-4),A
    141          
    142                  //把黑白字模转为彩色字模放在Buff中
    143                  //putCharChFlag=4;
    144                  BlackCharToColor(CHINESE_WIDTH_DEF, CharPointBuffer + CHINESE_WIDTH_DEF);
   \   011B  011000            LD      BC,CharPointBuffer+16
   \   011E  111000            LD      DE,16
   \   0121  CD8801            CALL    ?0038
    145                  //putCharChFlag=8; 
    146                  //BlackCharToColor(CHINESE_WIDTH_DEF, CharPointBuffer);
    147          
    148                  //把暂时显存区的数据送到LCM
    149                  Hdrv_BuffDataTrans(DisplayBuffer+colcnt*(CHINESE_HEIGHT_DEF/2)*2, 
    150                                                  (CHINESE_HEIGHT_DEF/2)*tmpwidth*2);        
    151                  region.y -= CHINESE_HEIGHT_DEF/2;//Y坐标加8准备输出下区(下半个汉字)
   \   0124  320100            LD      (region+1),A
    152                  region.height = CHINESE_HEIGHT_DEF/2;
   \   0127  3E08              LD      A,8
   \   0129  320300            LD      (region+3),A
    153                  Hdrv_SetWindow(&region);        
   \   012C  CD8201            CALL    ?0035
    154                  //BlackCharToColor(CHINESE_WIDTH_DEF, CharPointBuffer + CHINESE_WIDTH_DEF);        
    155                  BlackCharToColor(CHINESE_WIDTH_DEF, CharPointBuffer);
   \   012F  010000            LD      BC,CharPointBuffer
   \   0132  111000            LD      DE,16
   \   0135            ?0033:
   \   0135  CD0000            CALL    BlackCharToColor
    156                  //把暂时显存区的数据送到LCM
    157                  Hdrv_BuffDataTrans(DisplayBuffer+colcnt*(CHINESE_HEIGHT_DEF/2)*2, 
    158                                                  (CHINESE_HEIGHT_DEF/2)*tmpwidth*2);
   \   0138  DD6EFC            LD      L,(IX-4)
   \   013B  2600              LD      H,0
   \   013D  29                ADD     HL,HL
   \   013E  29                ADD     HL,HL
   \   013F  29                ADD     HL,HL
   \   0140  29                ADD     HL,HL
   \   0141  4D                LD      C,L
   \   0142  44                LD      B,H
   \   0143  DD6E06            LD      L,(IX+6)
   \   0146  2600              LD      H,0
   \   0148  29                ADD     HL,HL
   \   0149  29                ADD     HL,HL
   \   014A  29                ADD     HL,HL
   \   014B  29                ADD     HL,HL
   \   014C  110000            LD      DE,DisplayBuffer
   \   014F  19                ADD     HL,DE
   \   0150  EB                EX      DE,HL
   \   0151  CD0000            CALL    Hdrv_BuffDataTrans
    159                                                                  
    160                  break;
   \   0154            ?0021:
    161                  
    162              default:
    163                  break;
   \   0154            ?0002:
    164              }
    165              Hdrv_SetDrawMode(DrawModeH_def);    //把显示模式设置成横向显示模
   \   0154  110000            LD      DE,0
   \   0157  CD0000            CALL    Hdrv_SetDrawMode
    166              return TRUE;
   \   015A  3E01              LD      A,1
    167          
    168          
    169          }
   \   015C            ?0022:
   \   015C  DDF9              LD      SP,IX
   \   015E  DDE1              POP     IX
   \   0160  FDE1              POP     IY
   \   0162  C9                RET
   \   0163            ?0036:
   \   0163  FD7E00            LD      A,(IY+0)
   \   0166  320000            LD      (region),A
   \   0169  FD7E01            LD      A,(IY+1)
   \   016C  320100            LD      (region+1),A
   \   016F  FD7E02            LD      A,(IY+2)
   \   0172  320200            LD      (region+2),A
   \   0175  3E08              LD      A,8
   \   0177  320300            LD      (region+3),A
   \   017A  3A0100            LD      A,(region+1)
   \   017D  C608              ADD     A,8
   \   017F            ?0037:
   \   017F  320100            LD      (region+1),A
   \   0182            ?0035:
   \   0182  110000            LD      DE,region
   \   0185  C30000            JP      Hdrv_SetWindow
   \   0188            ?0038:
   \   0188  CD0000            CALL    BlackCharToColor
   \   018B  DD6EFC            LD      L,(IX-4)
   \   018E  2600              LD      H,0
   \   0190  29                ADD     HL,HL
   \   0191  29                ADD     HL,HL
   \   0192  29                ADD     HL,HL
   \   0193  29                ADD     HL,HL
   \   0194  4D                LD      C,L
   \   0195  44                LD      B,H
   \   0196  DD6E06            LD      L,(IX+6)
   \   0199  2600              LD      H,0
   \   019B  29                ADD     HL,HL
   \   019C  29                ADD     HL,HL
   \   019D  29                ADD     HL,HL
   \   019E  29                ADD     HL,HL
   \   019F  110000            LD      DE,DisplayBuffer
   \   01A2  19                ADD     HL,DE
   \   01A3  EB                EX      DE,HL
   \   01A4  CD0000            CALL    Hdrv_BuffDataTrans
   \   01A7  3A0100            LD      A,(region+1)
   \   01AA  C6F8              ADD     A,248
   \   01AC  C9                RET
   \   01AD                    END

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

⌨️ 快捷键说明

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