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

📄 ui_directory_rec.lst

📁 炬力方案176*132软件源码,适用于AK1025
💻 LST
📖 第 1 页 / 共 4 页
字号:
##############################################################################
#                                                                            #
# IAR Z80/64180 C-Compiler V4.04B/WIN                                        #
# Front End V4.20N                                       27/Sep/107  17:31:25 #
# Global Optimizer V1.05D                                                    #
#                                                                            #
#       Target option =  Z80                                                 #
#       Memory model  =  banked                                              #
#       Source file   =  d:\case_i_d913f\ap\common\ui_directory_rec.c        #
#       List file     =  d:\case_i_d913f\ap\ap_fmrecord\list\ui_directory_rec.lst#
#       Object file   =  d:\case_i_d913f\ap\ap_fmrecord\obj\ui_directory_rec.r01#
#       Command line  =  -v0 -mb -OD:\case_i_d913f\ap\ap_fmrecord\Obj\ -e    #
#                        -K -w -gA -s9 -RCODE -r0 -DNAPDEBUG                 #
#                        -LD:\case_i_d913f\ap\ap_fmrecord\List\ -q -t8 -X    #
#                        -Id:\sdk_i_913f\inc\ -Id:\case_i_d913f\inc\         #
#                        d:\case_i_d913f\AP\COMMON\ui_directory_rec.c        #
#                                                                            #
#                                             (c) Copyright IAR Systems 1996 #
##############################################################################

   \   0000                    NAME    ui_directory_rec(17)
   \   0000                    RSEG    COM_CTRL(0)
   \   0000                    RSEG    CSTR(0)
   \   0000                    EXTERN  BankSwitch
   \   0000                    EXTERN  DecodeOnePage
   \   0000                    EXTERN  FS_CD
   \   0000                    EXTERN  OnePageRecord
   \   0000                    EXTERN  ShowDirectory
   \   0000                    EXTERN  TransOneRecord
   \   0000                    EXTERN  ap_get_message
   \   0000                    EXTERN  ap_handle_hotkey
   \   0000                    EXTERN  ap_message_init
   \   0000                    EXTERN  cur_group
   \   0000                    EXTERN  fselDirLayer
   \   0000                    EXTERN  fselDirNo
   \   0000                    EXTERN  fselExtNo
   \   0000                    EXTERN  fselFileNo
   \   0000                    EXTERN  fselGetLocation
   \   0000                    EXTERN  fselSetLocationC
   \   0000                    EXTERN  init_dir_buf
   \   0000                    EXTERN  list_active
   \   0000                    EXTERN  list_total_num
   \   0000                    EXTERN  temp_record
   \   0000                    PUBLIC  ui_directory
   \   0000                    EXTERN  ?CLZ80B_4_04_L00
   \   0000                    EXTERN  ?US_DIV_L02
   \   0000                    EXTERN  ?US_MOD_L02
   \   0000                    EXTERN  ?S_MUL_L02
   \   0000                    EXTERN  ?C_V_SWITCH_L06
   \   0000                    EXTERN  ?BANK_CALL_DIRECT_L08
   \   0000                    EXTERN  ?BANK_FAST_LEAVE_L08
   \   0000                    RSEG    COM_CTRL
   \   0000            ui_directory:
      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.c
     10          * By  : jmzhang
     11          * Version: v1.00     first version     2005-9-22 19:35
     12          *******************************************************************************
     13          */
     14          #pragma codeseg(COM_CTRL)
     15          
     16          #include "ap_common.h"
     17          #include "directory.h"
     18          #include "filesys.h"
     19          
     20          #pragma memory=dataseg(DEC_COM_FSL_D)
     21          extern file_record temp_record;
     22          extern WORD dir_total_num,file_total_num,list_total_num,list_active,cur_group;    //目录总数,文件总数和浏览项数,浏览活动项
     23          #pragma memory=dataseg(IDM_COM_FSL_D)
     24          extern file_record OnePageRecord[row_count_def];
     25          extern char dirbuf[125];
     26          #pragma memory=default
     27          
     28          
     29          extern void DecodeOnePage(WORD top,WORD bottom,BYTE type, BYTE string_id);
     30          extern void ShowDirectory(BYTE top,BYTE bottom,BYTE Old_active,BYTE active,BYTE string_id,BYTE Disk);
     31          extern void init_dir_buf(void);
     32          extern void TransOneRecord(file_record *target,file_record *source_record);
     33          extern WORD GetActiveDirFrom(WORD n);
     34          
     35          /********************************************************************************
     36          * Description : select the directory.
     37          *
     38          * Arguments  :
     39          *            location: get thedisk type
     40          *            type : show file kind
     41          *            string_id: language type
     42          * Returns     :
     43          *            other:    Successful
     44          *            0:    Fail, detail information in fselError
     45          * Notes       :  only select the valid directory
     46          *
     47          ********************************************************************************/
     48          int ui_directory(file_location_t *location, BYTE type,BYTE string_id)
     49          {
   \   0000  FDE5              PUSH    IY
   \   0002  DDE5              PUSH    IX
   \   0004  DD210000          LD      IX,0
   \   0008  DD39              ADD     IX,SP
   \   000A  C5                PUSH    BC
   \   000B  D5                PUSH    DE
   \   000C  F5                PUSH    AF
   \   000D  F5                PUSH    AF
   \   000E  F5                PUSH    AF
     50              char Strname[12], bakname[12];
     51              char key;
     52              BYTE  iTag,i;
     53              BYTE  temp;
     54              WORD   top,bottom,old_active;
     55              BYTE  active;
     56              BYTE  DiskFlag;
     57              BankSwitch((unsigned long)DecodeOnePage >> 16);
   \   000F  0600              LD      B,0
   \   0011  1E00              LD      E,BYTE3 DecodeOnePage
   \   0013  CD0000            CALL    LWRD BankSwitch
     58              iTag = fselSetLocationC(location);
   \   0016  DD5EFC            LD      E,(IX-4)
   \   0019  DD56FD            LD      D,(IX-3)
   \   001C  3E00              LD      A,BYTE3 fselSetLocationC
   \   001E  210000            LD      HL,LWRD fselSetLocationC
   \   0021  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
     59          
     60              if (fselDirNo[0] == 0)    //当前所选为根目录,重新初始化目录层次有关参数
   \   0024  3A0000            LD      A,(fselDirNo)
   \   0027  B7                OR      A
   \   0028  2021              JR      NZ,?0003
   \   002A            ?0002:
     61              {
     62                  for(i=0; i<8; i++)
   \   002A  DD70FA            LD      (IX-6),B
   \   002D            ?0005:
   \   002D  DD7EFA            LD      A,(IX-6)
   \   0030  FE08              CP      8
   \   0032  300B              JR      NC,?0004
   \   0034            ?0006:
     63                      fselDirNo[i] = 0;
   \   0034  4F                LD      C,A
   \   0035  210000            LD      HL,fselDirNo
   \   0038  09                ADD     HL,BC
   \   0039  70                LD      (HL),B
   \   003A  DD34FA            INC     (IX-6)
   \   003D  18EE              JR      ?0005
   \   003F            ?0004:
     64                  FS_CD(":");
   \   003F  110000            LD      DE,?0008
   \   0042  CD0000            CALL    LWRD FS_CD
     65                  fselDirLayer = 0;
   \   0045  AF                XOR     A
   \   0046  320000            LD      (fselDirLayer),A
     66              }
     67              else            //进入当前目录名所指目录中
   \   0049  1837              JR      ?0013
   \   004B            ?0003:
     68              {
     69                  if(fselDirNo[fselDirLayer])
   \   004B  ED4B0000          LD      BC,(fselDirLayer)
   \   004F  0600              LD      B,0
   \   0051  210000            LD      HL,fselDirNo
   \   0054  09                ADD     HL,BC
   \   0055  7E                LD      A,(HL)
   \   0056  B7                OR      A
   \   0057  2808              JR      Z,?0011
   \   0059            ?0010:
     70                      fselDirLayer=fselDirLayer+1;
   \   0059  3A0000            LD      A,(fselDirLayer)
   \   005C  C601              ADD     A,1
   \   005E  320000            LD      (fselDirLayer),A
   \   0061            ?0011:
     71                  if(FS_CD(location->path))
   \   0061  210E00            LD      HL,14
   \   0064  DD4EFC            LD      C,(IX-4)
   \   0067  DD46FD            LD      B,(IX-3)
   \   006A  09                ADD     HL,BC
   \   006B  EB                EX      DE,HL
   \   006C  CD0000            CALL    LWRD FS_CD
   \   006F  B7                OR      A
   \   0070  2810              JR      Z,?0013
   \   0072            ?0012:
     72                  {
     73                      fselDirLayer=fselDirLayer+1;
   \   0072  3A0000            LD      A,(fselDirLayer)
   \   0075  C601              ADD     A,1
   \   0077  320000            LD      (fselDirLayer),A
     74                      fselDirNo[fselDirLayer] = 0;     //将当前目录号重新置为0(即目录首)
   \   007A  4F                LD      C,A
   \   007B  0600              LD      B,0
   \   007D  210000            LD      HL,fselDirNo
   \   0080  09                ADD     HL,BC
   \   0081  70                LD      (HL),B
   \   0082            ?0013:
   \   0082            ?0009:
     75                  }
     76              }
     77          
     78              init_dir_buf();        //计算目录总数
   \   0082  3E00              LD      A,BYTE3 init_dir_buf
   \   0084  210000            LD      HL,LWRD init_dir_buf
   \   0087  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
     79              list_active=0;
   \   008A  210000            LD      HL,0
   \   008D  220000            LD      (list_active),HL
     80              cur_group=0;
   \   0090  220000            LD      (cur_group),HL
     81          
     82              top=0; //顶的序号
     83              bottom=top+GroupDefine-1;                  //底的序号
   \   0093  FD210500          LD      IY,5
     84              if(bottom>(list_total_num-1))
   \   0097  AF                XOR     A
   \   0098  DD77F6            LD      (IX-10),A
   \   009B  DD77F7            LD      (IX-9),A
   \   009E  2B                DEC     HL
   \   009F  ED4B0000          LD      BC,(list_total_num)
   \   00A3  09                ADD     HL,BC
   \   00A4  FDE5              PUSH    IY
   \   00A6  C1                POP     BC
   \   00A7  A7                AND     A
   \   00A8  ED42              SBC     HL,BC
   \   00AA  300B              JR      NC,?0015
   \   00AC            ?0014:
     85                  bottom=list_total_num-1;
   \   00AC  21FFFF            LD      HL,65535
   \   00AF  ED4B0000          LD      BC,(list_total_num)
   \   00B3  09                ADD     HL,BC
   \   00B4  E5                PUSH    HL
   \   00B5  FDE1              POP     IY
   \   00B7            ?0015:
     86              if(location->disk=='H')
   \   00B7  DD6EFC            LD      L,(IX-4)
   \   00BA  DD66FD            LD      H,(IX-3)
   \   00BD  7E                LD      A,(HL)
   \   00BE  FE48              CP      72
   \   00C0  2006              JR      NZ,?0017
   \   00C2            ?0016:
     87                 DiskFlag=1;
   \   00C2  DD36F801          LD      (IX-8),1
     88              else
   \   00C6  1804              JR      ?0018
   \   00C8            ?0017:
     89                 DiskFlag=0;
   \   00C8  DD36F800          LD      (IX-8),0
   \   00CC            ?0018:
     90              DecodeOnePage(top,bottom,type,string_id);
   \   00CC  DD6E08            LD      L,(IX+8)
   \   00CF  E5                PUSH    HL
   \   00D0  DD6EFE            LD      L,(IX-2)
   \   00D3  E5                PUSH    HL
   \   00D4  CD2204            CALL    LWRD ?0124
   \   00D7  E1                POP     HL
   \   00D8  E1                POP     HL
     91              ShowDirectory(top,bottom,list_active,list_active,string_id,DiskFlag);
   \   00D9  DD6EF8            LD      L,(IX-8)
   \   00DC  E5                PUSH    HL
   \   00DD  DD6E08            LD      L,(IX+8)
   \   00E0  E5                PUSH    HL
   \   00E1  3A0000            LD      A,(list_active)
   \   00E4  4F                LD      C,A
   \   00E5  C5                PUSH    BC
   \   00E6  4F                LD      C,A
   \   00E7  C5                PUSH    BC
   \   00E8  CD3304            CALL    LWRD ?0125
   \   00EB  E1                POP     HL
   \   00EC  E1                POP     HL
   \   00ED  E1                POP     HL
   \   00EE  E1                POP     HL
   \   00EF            ?0020:
     92          
     93              while(ap_get_message()!=0) {;}

⌨️ 快捷键说明

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