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

📄 sdrv_puts.lst

📁 炬力方案176*132软件源码,适用于AK1025
💻 LST
📖 第 1 页 / 共 2 页
字号:
   \   0036  DDE5              PUSH    IX
   \   0038  C1                POP     BC
   \   0039  71                LD      (HL),C
   \   003A  23                INC     HL
   \   003B  70                LD      (HL),B
     85                  //下面是碰到换行符时要作换行处理
     86                  if (*str == '\n')
   \   003C  0A                LD      A,(BC)
   \   003D  FE0A              CP      10
   \   003F  201A              JR      NZ,?0012
   \   0041            ?0008:
     87                  {
     88                          str++;
     89                          //region.x = 0;
     90                          region.x = rowNum_sav;          
   \   0041  2B                DEC     HL
   \   0042  2B                DEC     HL
   \   0043  7E                LD      A,(HL)
   \   0044  320000            LD      (region),A
     91                          region.y += StrHeight;
   \   0047  3A0000            LD      A,(StrHeight)
   \   004A  47                LD      B,A
   \   004B  3A0100            LD      A,(region+1)
   \   004E  80                ADD     A,B
   \   004F  320100            LD      (region+1),A
     92                          lineNum_sav = region.y;//保存当前行顶的y轴坐标
   \   0052  2B                DEC     HL
   \   0053  77                LD      (HL),A
     93                          if (AsciiSelect == FONT_TYPE_SMALL)
   \   0054            ?0010:
     94                          {
     95                                  StrHeight = CHINESE_HEIGHT_DEF1;//一行字符的高度
     96                          }
     97                          else
   \   0054            ?0011:
     98                          {
     99                                  StrHeight = CHINESE_HEIGHT_DEF1;//一行字符的高度
   \   0054  3E10              LD      A,16
   \   0056  320000            LD      (StrHeight),A
   \   0059  DD23              INC     IX
   \   005B            ?0012:
   \   005B            ?0009:
    100                          }
    101                          
    102                  }
    103          
    104                  //汉字和ASCII的不同处理   
    105                  if (*str >= FirstSectionCode)
   \   005B  DD7E00            LD      A,(IX+0)
   \   005E  FEA1              CP      161
   \   0060  380D              JR      C,?0014
   \   0062            ?0013:
    106                  {//汉字
    107                      code = *(int *)str;             
   \   0062  DD6E00            LD      L,(IX+0)
   \   0065  DD6601            LD      H,(IX+1)
   \   0068  E5                PUSH    HL
   \   0069  FDE1              POP     IY
    108                      str++;//汉字指针要比ASCII多加一,
    109                      StrHeight = CHINESE_HEIGHT_DEF1;//把当前行的高度设为汉字的高度
   \   006B  DD23              INC     IX
   \   006D  1808              JR      ?0024
    110                  }
    111                  else 
   \   006F            ?0014:
    112                  {//ASCII
    113                      code = *str;
   \   006F  DD4E00            LD      C,(IX+0)
   \   0072  0600              LD      B,0
   \   0074  C5                PUSH    BC
   \   0075  FDE1              POP     IY
    114                      //这里保证ascii码与汉字下对齐
    115                     /*
    116                      if (AsciiSelect == FONT_TYPE_SMALL)
    117                      {                   
    118                                          region.y += (StrHeight-ASCII_SMALL_HEIGHT_DEF);
    119                                  }
    120                                  else
    121                                  {
    122                                          region.y += (StrHeight-ASCII_LARGE_HEIGHT_DEF);
    123                                  }                               
    124                     */
    125                     StrHeight = CHINESE_HEIGHT_DEF1;//把当前行的高度设为汉字的高度
   \   0077            ?0024:
   \   0077  3E10              LD      A,16
   \   0079  320000            LD      (StrHeight),A
   \   007C            ?0015:
    126                  }
    127                  str++;
    128                  result = Sdrv_PutChar(code);
   \   007C  FDE5              PUSH    IY
   \   007E  D1                POP     DE
   \   007F  CD0000            CALL    Sdrv_PutChar
   \   0082  210400            LD      HL,4
   \   0085  39                ADD     HL,SP
   \   0086  77                LD      (HL),A
    129                  if (!result) //输出字符
   \   0087  AF                XOR     A
   \   0088  B6                OR      (HL)
   \   0089  DD23              INC     IX
   \   008B  2008              JR      NZ,?0017
   \   008D            ?0016:
    130                  {
    131                          //当输出区域超出范围时退出
    132                      return lastcharpt;//返回上一个字符的指针,因为当前指针已加一了
   \   008D  2B                DEC     HL
   \   008E  2B                DEC     HL
   \   008F  46                LD      B,(HL)
   \   0090  23                INC     HL
   \   0091  66                LD      H,(HL)
   \   0092  68                LD      L,B
    133                  }
   \   0093  1811              JR      ?0018
   \   0095            ?0017:
    134                  (unsigned char)strlen--;//不理负号直接减(因为0xff时表示显示全部)
   \   0095  23                INC     HL
   \   0096  23                INC     HL
   \   0097  35                DEC     (HL)
    135                  region.y = lineNum_sav;//恢复当前行顶y的轴坐标
   \   0098  210000            LD      HL,0
   \   009B  39                ADD     HL,SP
   \   009C  7E                LD      A,(HL)
   \   009D  320100            LD      (region+1),A
   \   00A0  C31D00            JP      ?0002
   \   00A3            ?0003:
    136                  //暂时不让某些地方显示过长
    137                  ///if ( ((unsigned char)strlen > 200) && (region.x > 188) )
    138                  //if ( ((unsigned char)strlen > 128) && (region.x > 120) )
    139                  //{
    140                  //    break;
    141                  //}
    142              }
    143              return str;
   \   00A3  DDE5              PUSH    IX
   \   00A5  E1                POP     HL
    144          }
   \   00A6            ?0018:
   \   00A6  F1                POP     AF
   \   00A7  F1                POP     AF
   \   00A8  F1                POP     AF
   \   00A9  F1                POP     AF
   \   00AA  DDE1              POP     IX
   \   00AC  FDE1              POP     IY
   \   00AE  C9                RET
   \   0000                    RSEG    IDATA0
   \   0000            StrHeight:
   \   0001                    DEFS    1
   \   0000                    RSEG    CDATA0
   \   0000  08                DEFB    8
   \   0001                    END

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

⌨️ 快捷键说明

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