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

📄 ui_directory_fun.lst

📁 MP3 整个 SDK
💻 LST
📖 第 1 页 / 共 2 页
字号:
##############################################################################
#                                                                            #
# IAR Z80/64180 C-Compiler V4.04B/WIN                                        #
# Front End V4.20N                                       25/Dec/106  17:00:37 #
# Global Optimizer V1.05D                                                    #
#                                                                            #
#       Target option =  Z80                                                 #
#       Memory model  =  banked                                              #
#       Source file   =  d:\case_i_d90f\ap\common\ui_directory_fun.c         #
#       List file     =  d:\case_i_d90f\ap\ap_music\list\ui_directory_fun.lst#
#       Object file   =  d:\case_i_d90f\ap\ap_music\obj\ui_directory_fun.r01 #
#       ASM file      =  d:\case_i_d90f\ap\ap_music\list\ui_directory_fun.s01#
#       Command line  =  -v0 -mb -OD:\case_i_d90f\ap\ap_music\Obj\ -e -K -w  #
#                        -gA -z9 -RCODE -r0 -DNAPDEBUG                       #
#                        -LD:\case_i_d90f\ap\ap_music\List\ -q -t8           #
#                        -AD:\case_i_d90f\ap\ap_music\List\                  #
#                        -ND:\case_i_d90f\ap\ap_music\List\ -X               #
#                        -Id:\sdk_i_90f\inc\ -Id:\case_i_d90f\inc\           #
#                        D:\CASE_I_D90F\AP\COMMON\ui_directory_fun.c         #
#                                                                            #
#                                             (c) Copyright IAR Systems 1996 #
##############################################################################

   \   0000                    NAME    ui_directory_fun(17)
   \   0000                    RSEG    COM_CTRL(0)
   \   0000                    RSEG    CSTR(0)
   \   0000                    EXTERN  FS_CD
   \   0000                    PUBLIC  GetActiveDirFrom
   \   0000                    EXTERN  GetFileTotal
   \   0000                    PUBLIC  Getdirbuf
   \   0000                    PUBLIC  Initdirbuf
   \   0000                    PUBLIC  Setdirbuf
   \   0000                    EXTERN  ToDirEntry
   \   0000                    PUBLIC  count_dir_num
   \   0000                    EXTERN  dirbuf
   \   0000                    EXTERN  ?CLZ80B_4_04_L00
   \   0000                    EXTERN  ?C_LSH_L01
   \   0000                    EXTERN  ?UC_DIV_L01
   \   0000                    EXTERN  ?US_RSH_L02
   \   0000                    EXTERN  ?BANK_CALL_DIRECT_L08
   \   0000                    EXTERN  ?BANK_LEAVE_DIRECT_L08
   \   0000                    EXTERN  ?BANK_FAST_LEAVE_L08
   \   0000                    EXTERN  ?ENT_AUTO_DIRECT_L09
   \   0000                    RSEG    COM_CTRL
   \   0000            Initdirbuf:
      1          /*
      2          *******************************************************************************
      3          *                ACTOS AP
      4          *        ap common lib, directory control file 
      5          *
      6          *        (c) Copyright, Actions Co,Ld.                             
      7          *             All Right Reserved                          
      8          *
      9          * File: ui_directory_fun.c
     10          * By  : jmzhang
     11          * Version: v1.00     first version     2005-9-22 19:35
     12          *******************************************************************************
     13          */ 
     14          #pragma codeseg(COM_CTRL)
     15          #include "ap_common.h"
     16          #include "enhanced.h"
     17          #include "actos.h"
     18          #include "filesys.h"
     19          #include "directory.h"
     20          
     21          extern const char Ui_IgnoreExt[4];// = {"*  "};
     22                                                                     
     23          
     24          
     25          #pragma memory=dataseg(IDM_COM_FSL_D)
     26          extern char dirbuf[125];
     27          
     28          #pragma memory=default
     29          
     30          
     31          void Initdirbuf(void)
     32          {
   \   0000  CD0000            CALL    LWRD ?ENT_AUTO_DIRECT_L09
   \   0003  FEFF              DEFW    -2
     33              int i;
     34                  byte status; 
     35                  status = input8(0x05);
   \   0005  DB05              IN      A,(5)
   \   0007  DD77FE            LD      (IX-2),A
     36                  output8(0x05, 0xf6);    
   \   000A  3EF6              LD      A,246
   \   000C  D305              OUT     (5),A
     37                  
     38              for(i=0;i<125;i++)
   \   000E  110000            LD      DE,0
   \   0011            ?0003:
   \   0011  017D80            LD      BC,32893
   \   0014  6B                LD      L,E
   \   0015  62                LD      H,D
   \   0016  78                LD      A,B
   \   0017  AC                XOR     H
   \   0018  67                LD      H,A
   \   0019  ED42              SBC     HL,BC
   \   001B  3009              JR      NC,?0002
   \   001D            ?0004:
     39                  dirbuf[i]=0;
   \   001D  210000            LD      HL,dirbuf
   \   0020  19                ADD     HL,DE
   \   0021  3600              LD      (HL),0
   \   0023  13                INC     DE
   \   0024  18EB              JR      ?0003
   \   0026            ?0002:
     40                  
     41                  output8(0x05, status);            
   \   0026  DD7EFE            LD      A,(IX-2)
   \   0029  D305              OUT     (5),A
     42          }
   \   002B  C30000            JP      LWRD ?BANK_LEAVE_DIRECT_L08
   \   002E            Setdirbuf:
     43          
     44          
     45          //********************************************************************************
     46          //* Description :用于建立快速查询表 
     47          //*        n 最大值为999   
     48          //** Arguments  :
     49          //*
     50          //* Returns     : 
     51          //*
     52          //* Notes       :  
     53          //*        
     54          //********************************************************************************   
     55          void Setdirbuf(WORD n)
     56          {
   \   002E  CD0000            CALL    LWRD ?ENT_AUTO_DIRECT_L09
   \   0031  FEFF              DEFW    -2
     57              BYTE m,k;
     58              byte status; 
     59          
     60              if(n>999)
   \   0033  DD4E02            LD      C,(IX+2)
   \   0036  DD4603            LD      B,(IX+3)
   \   0039  21E703            LD      HL,999
   \   003C  A7                AND     A
   \   003D  ED42              SBC     HL,BC
   \   003F  382E              JR      C,?0008
   \   0041            ?0006:
   \   0041            ?0007:
     61                  return;    
     62              status = input8(0x05);
   \   0041  DB05              IN      A,(5)
   \   0043  57                LD      D,A
     63              output8(0x05, 0xf6);    
   \   0044  3EF6              LD      A,246
   \   0046  D305              OUT     (5),A
     64              
     65              m=n/8;
   \   0048  D5                PUSH    DE
   \   0049  0603              LD      B,3
   \   004B  DD5E02            LD      E,(IX+2)
   \   004E  DD5603            LD      D,(IX+3)
   \   0051  CD0000            CALL    LWRD ?US_RSH_L02
   \   0054  DD73FE            LD      (IX-2),E
   \   0057  D1                POP     DE
     66              k=n%8;
   \   0058  79                LD      A,C
   \   0059  E607              AND     7
     67              k=1<<k;
   \   005B  47                LD      B,A
   \   005C  3E01              LD      A,1
   \   005E  CD0000            CALL    LWRD ?C_LSH_L01
     68              dirbuf[m]=dirbuf[m]|k;
   \   0061  DD4EFE            LD      C,(IX-2)
   \   0064  0600              LD      B,0
   \   0066  210000            LD      HL,dirbuf
   \   0069  09                ADD     HL,BC
   \   006A  B6                OR      (HL)
   \   006B  77                LD      (HL),A
     69              
     70              output8(0x05, status);                
   \   006C  7A                LD      A,D
   \   006D  D305              OUT     (5),A
     71          }
   \   006F            ?0008:
   \   006F  C30000            JP      LWRD ?BANK_LEAVE_DIRECT_L08
   \   0072            Getdirbuf:
     72             
     73          //********************************************************************************
     74          //* Description :输入为目录在list表中的位置,输出目录序号DirNo, 
     75          //*        n 最大值为999   
     76          //** Arguments   :
     77          //*
     78          //* Returns     : 输出目录序号DirNo
     79          //*
     80          //* Notes       :  
     81          //*        
     82          //********************************************************************************   
     83          WORD Getdirbuf(WORD n)        
     84          {
   \   0072  CD0000            CALL    LWRD ?ENT_AUTO_DIRECT_L09
   \   0075  FAFF              DEFW    -6
   \   0077  FDE5              PUSH    IY
     85              WORD h=0,k=0;
     86              BYTE m,i,j;
     87              BYTE needbreak=0; 
     88              byte status; 
     89          
     90              if(n>999)
   \   0079  110000            LD      DE,0
   \   007C  FD210000          LD      IY,0
   \   0080  DD36FD00          LD      (IX-3),0
   \   0084  DD4E02            LD      C,(IX+2)
   \   0087  DD4603            LD      B,(IX+3)
   \   008A  21E703            LD      HL,999
   \   008D  A7                AND     A
   \   008E  ED42              SBC     HL,BC
   \   0090  3005              JR      NC,?0010
   \   0092            ?0009:
     91                  return 0;    
   \   0092  210000            LD      HL,0
   \   0095  187B              JR      ?0029
   \   0097            ?0010:
     92              status = input8(0x05);
   \   0097  DB05              IN      A,(5)
   \   0099  DD77FE            LD      (IX-2),A
     93              output8(0x05, 0xf6);        
   \   009C  3EF6              LD      A,246
   \   009E  D305              OUT     (5),A
     94              
     95              for(i=0;i<125;i++)
   \   00A0  DD36FA00          LD      (IX-6),0
   \   00A4            ?0012:
   \   00A4  DD7EFA            LD      A,(IX-6)
   \   00A7  FE7D              CP      125
   \   00A9  305B              JR      NC,?0011
   \   00AB            ?0013:
     96              {
     97                  k++;
     98                  m=dirbuf[i];
   \   00AB  4F                LD      C,A
   \   00AC  0600              LD      B,0
   \   00AE  210000            LD      HL,dirbuf
   \   00B1  09                ADD     HL,BC
   \   00B2  46                LD      B,(HL)
   \   00B3  DD70FB            LD      (IX-5),B
     99                  if((m&1)==1)h++;
   \   00B6  CB40              BIT     0,B
   \   00B8  FD23              INC     IY
   \   00BA  2801              JR      Z,?0016
   \   00BC            ?0015:
   \   00BC  13                INC     DE
   \   00BD            ?0016:
    100                  if(h==n)
   \   00BD  DD6E02            LD      L,(IX+2)
   \   00C0  DD6603            LD      H,(IX+3)
   \   00C3  A7                AND     A
   \   00C4  ED52              SBC     HL,DE
   \   00C6  283E              JR      Z,?0011
   \   00C8            ?0017:
    101                  break;
   \   00C8            ?0018:
    102                  for(j=0;j<7;j++)
   \   00C8  DD36FC00          LD      (IX-4),0
   \   00CC            ?0020:
   \   00CC  DD7EFC            LD      A,(IX-4)
   \   00CF  FE07              CP      7
   \   00D1  3028              JR      NC,?0019
   \   00D3            ?0021:
    103                  {
    104                      k++;
    105                      m=m/2;
   \   00D3  210300            LD      HL,3
   \   00D6  39                ADD     HL,SP
   \   00D7  0602              LD      B,2
   \   00D9  7E                LD      A,(HL)
   \   00DA  CD0000            CALL    LWRD ?UC_DIV_L01
   \   00DD  77                LD      (HL),A
    106                      if((m&1)==1)h++;
   \   00DE  CB47              BIT     0,A
   \   00E0  FD23              INC     IY
   \   00E2  2801              JR      Z,?0024
   \   00E4            ?0023:
   \   00E4  13                INC     DE
   \   00E5            ?0024:
    107                      if(h==n)
   \   00E5  DD6E02            LD      L,(IX+2)
   \   00E8  DD6603            LD      H,(IX+3)
   \   00EB  A7                AND     A
   \   00EC  ED52              SBC     HL,DE
   \   00EE  2006              JR      NZ,?0026
   \   00F0            ?0025:
    108                      {
    109                  needbreak=1;
   \   00F0  DD36FD01          LD      (IX-3),1
    110                  break;
   \   00F4  1805              JR      ?0019
   \   00F6            ?0026:
   \   00F6  DD34FC            INC     (IX-4)
   \   00F9  18D1              JR      ?0020
   \   00FB            ?0019:
    111                      }
    112          
    113                  }
    114                  if(needbreak)
   \   00FB  AF                XOR     A
   \   00FC  DDB6FD            OR      (IX-3)
   \   00FF  2005              JR      NZ,?0011
   \   0101            ?0027:
    115                      break;
   \   0101            ?0028:
   \   0101  DD34FA            INC     (IX-6)
   \   0104  189E              JR      ?0012
   \   0106            ?0011:
    116              }
    117              output8(0x05, status); 
   \   0106  DD7EFE            LD      A,(IX-2)
   \   0109  D305              OUT     (5),A
    118              return k-1;                       
   \   010B  21FFFF            LD      HL,65535
   \   010E  FDE5              PUSH    IY
   \   0110  C1                POP     BC
   \   0111  09                ADD     HL,BC

⌨️ 快捷键说明

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