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

📄 ui_directory_fun.lst

📁 MP3 整个 SDK
💻 LST
📖 第 1 页 / 共 2 页
字号:
##############################################################################
#                                                                            #
# IAR Z80/64180 C-Compiler V4.04B/WIN                                        #
# Front End V4.20N                                       25/Dec/106  16:58:59 #
# 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_amv\list\ui_directory_fun.lst  #
#       Object file   =  d:\case_i_d90f\ap\ap_amv\obj\ui_directory_fun.r01   #
#       ASM file      =  d:\case_i_d90f\ap\ap_amv\list\ui_directory_fun.s01  #
#       Command line  =  -v0 -mb -OD:\case_i_d90f\ap\ap_amv\Obj\ -e -K -w    #
#                        -gA -s9 -RCODE -r0 -DNAPDEBUG -DAMV_JPG_TXT         #
#                        -LD:\case_i_d90f\ap\ap_amv\List\ -q -t8             #
#                        -AD:\case_i_d90f\ap\ap_amv\List\                    #
#                        -ND:\case_i_d90f\ap\ap_amv\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_FAST_LEAVE_L08
   \   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  C5                PUSH    BC
   \   0001  D5                PUSH    DE
   \   0002  F5                PUSH    AF
     33              int i;
     34                  byte status; 
     35                  status = input8(0x05);
   \   0003  DB05              IN      A,(5)
   \   0005  210000            LD      HL,0
   \   0008  39                ADD     HL,SP
   \   0009  77                LD      (HL),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  210000            LD      HL,0
   \   0029  39                ADD     HL,SP
   \   002A  7E                LD      A,(HL)
   \   002B  D305              OUT     (5),A
     42          }
   \   002D  E1                POP     HL
   \   002E  D1                POP     DE
   \   002F  C1                POP     BC
   \   0030  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   0033            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          {
   \   0033  C5                PUSH    BC
   \   0034  DDE5              PUSH    IX
   \   0036  F5                PUSH    AF
   \   0037  F5                PUSH    AF
   \   0038  D5                PUSH    DE
   \   0039  DDE1              POP     IX
     57              BYTE m,k;
     58              byte status; 
     59          
     60              if(n>999)
   \   003B  21E703            LD      HL,999
   \   003E  A7                AND     A
   \   003F  ED52              SBC     HL,DE
   \   0041  382C              JR      C,?0008
   \   0043            ?0006:
   \   0043            ?0007:
     61                  return;    
     62              status = input8(0x05);
   \   0043  DB05              IN      A,(5)
   \   0045  210100            LD      HL,1
   \   0048  39                ADD     HL,SP
   \   0049  77                LD      (HL),A
     63              output8(0x05, 0xf6);    
   \   004A  3EF6              LD      A,246
   \   004C  D305              OUT     (5),A
     64              
     65              m=n/8;
   \   004E  0603              LD      B,3
   \   0050  CD0000            CALL    LWRD ?US_RSH_L02
     66              k=n%8;
   \   0053  DDE5              PUSH    IX
   \   0055  E1                POP     HL
   \   0056  7D                LD      A,L
   \   0057  E607              AND     7
     67              k=1<<k;
   \   0059  47                LD      B,A
   \   005A  3E01              LD      A,1
   \   005C  CD0000            CALL    LWRD ?C_LSH_L01
     68              dirbuf[m]=dirbuf[m]|k;
   \   005F  4B                LD      C,E
   \   0060  0600              LD      B,0
   \   0062  210000            LD      HL,dirbuf
   \   0065  09                ADD     HL,BC
   \   0066  B6                OR      (HL)
   \   0067  77                LD      (HL),A
     69              
     70              output8(0x05, status);                
   \   0068  210100            LD      HL,1
   \   006B  39                ADD     HL,SP
   \   006C  7E                LD      A,(HL)
   \   006D  D305              OUT     (5),A
     71          }
   \   006F            ?0008:
   \   006F  E1                POP     HL
   \   0070  E1                POP     HL
   \   0071  DDE1              POP     IX
   \   0073  C1                POP     BC
   \   0074  C30000            JP      LWRD ?BANK_FAST_LEAVE_L08
   \   0077            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          {
   \   0077  C5                PUSH    BC
   \   0078  FDE5              PUSH    IY
   \   007A  DDE5              PUSH    IX
   \   007C  DD210000          LD      IX,0
   \   0080  DD39              ADD     IX,SP
   \   0082  D5                PUSH    DE
   \   0083  F5                PUSH    AF
   \   0084  F5                PUSH    AF
   \   0085  F5                PUSH    AF
   \   0086  F5                PUSH    AF
     85              WORD h=0,k=0;
     86              BYTE m,i,j;
     87              BYTE needbreak=0; 
     88              byte status; 
     89          
     90              if(n>999)
   \   0087  FD210000          LD      IY,0
   \   008B  AF                XOR     A
   \   008C  DD77F6            LD      (IX-10),A
   \   008F  DD77F7            LD      (IX-9),A
   \   0092  DD77FB            LD      (IX-5),A
   \   0095  21E703            LD      HL,999
   \   0098  ED52              SBC     HL,DE
   \   009A  3005              JR      NC,?0010
   \   009C            ?0009:
     91                  return 0;    
   \   009C  6F                LD      L,A
   \   009D  67                LD      H,A
   \   009E  C33301            JP      LWRD ?0029
   \   00A1            ?0010:
     92              status = input8(0x05);
   \   00A1  DB05              IN      A,(5)
   \   00A3  DD77FC            LD      (IX-4),A
     93              output8(0x05, 0xf6);        
   \   00A6  3EF6              LD      A,246
   \   00A8  D305              OUT     (5),A
     94              
     95              for(i=0;i<125;i++)
   \   00AA  DD36F800          LD      (IX-8),0
   \   00AE            ?0012:
   \   00AE  DD7EF8            LD      A,(IX-8)
   \   00B1  FE7D              CP      125
   \   00B3  306F              JR      NC,?0011
   \   00B5            ?0013:
     96              {
     97                  k++;
   \   00B5  DD34F6            INC     (IX-10)
   \   00B8  2003              JR      NZ,?0066
   \   00BA  DD34F7            INC     (IX-9)
   \   00BD            ?0066:
     98                  m=dirbuf[i];
   \   00BD  4F                LD      C,A
   \   00BE  0600              LD      B,0
   \   00C0  210000            LD      HL,dirbuf
   \   00C3  09                ADD     HL,BC
   \   00C4  46                LD      B,(HL)
   \   00C5  DD70F9            LD      (IX-7),B
     99                  if((m&1)==1)h++;
   \   00C8  CB40              BIT     0,B
   \   00CA  2802              JR      Z,?0016
   \   00CC            ?0015:
   \   00CC  FD23              INC     IY
   \   00CE            ?0016:
    100                  if(h==n)
   \   00CE  DD6EFE            LD      L,(IX-2)
   \   00D1  DD66FF            LD      H,(IX-1)
   \   00D4  FDE5              PUSH    IY
   \   00D6  C1                POP     BC
   \   00D7  A7                AND     A
   \   00D8  ED42              SBC     HL,BC
   \   00DA  2848              JR      Z,?0011
   \   00DC            ?0017:
    101                  break;
   \   00DC            ?0018:
    102                  for(j=0;j<7;j++)
   \   00DC  DD36FA00          LD      (IX-6),0
   \   00E0            ?0020:
   \   00E0  DD7EFA            LD      A,(IX-6)
   \   00E3  FE07              CP      7
   \   00E5  3032              JR      NC,?0019
   \   00E7            ?0021:
    103                  {
    104                      k++;
   \   00E7  DD34F6            INC     (IX-10)
   \   00EA  2003              JR      NZ,?0067
   \   00EC  DD34F7            INC     (IX-9)
   \   00EF            ?0067:
    105                      m=m/2;
   \   00EF  210300            LD      HL,3
   \   00F2  39                ADD     HL,SP
   \   00F3  0602              LD      B,2
   \   00F5  7E                LD      A,(HL)
   \   00F6  CD0000            CALL    LWRD ?UC_DIV_L01
   \   00F9  77                LD      (HL),A
    106                      if((m&1)==1)h++;
   \   00FA  CB47              BIT     0,A
   \   00FC  2802              JR      Z,?0024
   \   00FE            ?0023:
   \   00FE  FD23              INC     IY
   \   0100            ?0024:
    107                      if(h==n)
   \   0100  DD6EFE            LD      L,(IX-2)
   \   0103  DD66FF            LD      H,(IX-1)
   \   0106  FDE5              PUSH    IY
   \   0108  C1                POP     BC
   \   0109  A7                AND     A
   \   010A  ED42              SBC     HL,BC
   \   010C  2006              JR      NZ,?0026
   \   010E            ?0025:
    108                      {
    109                  needbreak=1;
   \   010E  DD36FB01          LD      (IX-5),1
    110                  break;
   \   0112  1805              JR      ?0019
   \   0114            ?0026:
   \   0114  DD34FA            INC     (IX-6)
   \   0117  18C7              JR      ?0020
   \   0119            ?0019:
    111                      }
    112          
    113                  }
    114                  if(needbreak)
   \   0119  AF                XOR     A
   \   011A  DDB6FB            OR      (IX-5)
   \   011D  2005              JR      NZ,?0011
   \   011F            ?0027:
    115                      break;
   \   011F            ?0028:
   \   011F  DD34F8            INC     (IX-8)
   \   0122  188A              JR      ?0012
   \   0124            ?0011:
    116              }
    117              output8(0x05, status); 
   \   0124  DD7EFC            LD      A,(IX-4)
   \   0127  D305              OUT     (5),A

⌨️ 快捷键说明

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