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

📄 ui_directory_scroll.lst

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

   \   0000                    NAME    ui_directory_scroll(17)
   \   0000                    RSEG    COM_CTRL(0)
   \   0000                    RSEG    CSTR(0)
   \   0000                    EXTERN  BankSwitch
   \   0000                    EXTERN  DecodeOnePage
   \   0000                    EXTERN  FS_CD
   \   0000                    EXTERN  GetActiveDirFrom
   \   0000                    EXTERN  OnePageRecord
   \   0000                    EXTERN  ScrollFlag
   \   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  fselEntCurrentDir
   \   0000                    EXTERN  fselExtNo
   \   0000                    EXTERN  fselFileNo
   \   0000                    EXTERN  fselGetLocation
   \   0000                    EXTERN  fselRetParentDir
   \   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          
     24          #pragma memory=dataseg(IDM_COM_FSL_D)
     25          extern file_record OnePageRecord[row_count_def];
     26          extern char dirbuf[125]; 
     27          #pragma memory=default
     28          
     29          
     30          extern void DecodeOnePage(WORD top,WORD bottom,BYTE type, BYTE string_id);
     31          extern void ShowDirectory(WORD top,WORD bottom,WORD Old_active,WORD active,BYTE string_id,BYTE Disk);
     32          extern void init_dir_buf(void);  
     33          extern void TransOneRecord(file_record *target,file_record *source_record);
     34          extern WORD GetActiveDirFrom(WORD n); 
     35          extern  char     ScrollFlag;   //滚动标志位 
     36          
     37          /********************************************************************************
     38          * Description : select the directory.
     39          *
     40          * Arguments  : 
     41          *            location: get thedisk type
     42          *            type : show file kind
     43          *            string_id: language type
     44          * Returns     :
     45          *            other:    Successful
     46          *            0:    Fail, detail information in fselError
     47          * Notes       :  only select the valid directory 
     48          *
     49          ********************************************************************************/
     50          int ui_directory(file_location_t *location, BYTE type,BYTE string_id)
     51          {
   \   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  21ECFF            LD      HL,65516
   \   000F  39                ADD     HL,SP
   \   0010  F9                LD      SP,HL
     52              char Strname[12];
     53              char key;
     54              BYTE  iTag,i;
     55              BYTE  count=0;
   \   0011  DD36ED00          LD      (IX-19),0
     56              WORD   top,bottom,old_active;
     57              BYTE  active;
     58              BYTE  DiskFlag;
     59              
     60              if(location->disk=='H')
   \   0015  1A                LD      A,(DE)
   \   0016  FE48              CP      72
   \   0018  2006              JR      NZ,?0003
   \   001A            ?0002:
     61                 DiskFlag=1;
   \   001A  DD36EA01          LD      (IX-22),1
     62              else
   \   001E  1804              JR      ?0004
   \   0020            ?0003:
     63                 DiskFlag=0;
   \   0020  DD36EA00          LD      (IX-22),0
   \   0024            ?0004:
     64                  
     65              BankSwitch((unsigned long)DecodeOnePage >> 16);
   \   0024  0600              LD      B,0
   \   0026  1E00              LD      E,BYTE3 DecodeOnePage
   \   0028  CD0000            CALL    LWRD BankSwitch
     66              iTag = fselSetLocationC(location);
   \   002B  DD5EFC            LD      E,(IX-4)
   \   002E  DD56FD            LD      D,(IX-3)
   \   0031  3E00              LD      A,BYTE3 fselSetLocationC
   \   0033  210000            LD      HL,LWRD fselSetLocationC
   \   0036  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
     67              if (fselDirNo[0] == 0)    //当前所选为根目录,重新初始化目录层次有关参数
   \   0039  3A0000            LD      A,(fselDirNo)
   \   003C  B7                OR      A
   \   003D  2021              JR      NZ,?0006
   \   003F            ?0005:
     68              {
     69                  for(i=0; i<8; i++)
   \   003F  DD70EC            LD      (IX-20),B
   \   0042            ?0008:
   \   0042  DD7EEC            LD      A,(IX-20)
   \   0045  FE08              CP      8
   \   0047  300B              JR      NC,?0007
   \   0049            ?0009:
     70                      fselDirNo[i] = 0;
   \   0049  4F                LD      C,A
   \   004A  210000            LD      HL,fselDirNo
   \   004D  09                ADD     HL,BC
   \   004E  70                LD      (HL),B
   \   004F  DD34EC            INC     (IX-20)
   \   0052  18EE              JR      ?0008
   \   0054            ?0007:
     71                  FS_CD(":");
   \   0054  110000            LD      DE,?0011
   \   0057  CD0000            CALL    LWRD FS_CD
     72                  fselDirLayer = 0;
   \   005A  AF                XOR     A
   \   005B  320000            LD      (fselDirLayer),A
     73              }
     74              else            //进入当前目录名所指目录中
   \   005E  1837              JR      ?0018
   \   0060            ?0006:
     75              {
     76                  if(fselDirLayer<7)
   \   0060  3A0000            LD      A,(fselDirLayer)
   \   0063  FE07              CP      7
   \   0065  3030              JR      NC,?0018
   \   0067            ?0013:
     77                  {
     78                      if(fselDirNo[fselDirLayer])
   \   0067  4F                LD      C,A
   \   0068  210000            LD      HL,fselDirNo
   \   006B  09                ADD     HL,BC
   \   006C  7E                LD      A,(HL)
   \   006D  B7                OR      A
   \   006E  2806              JR      Z,?0016
   \   0070            ?0015:
     79                          fselDirLayer=fselDirLayer+1;
   \   0070  79                LD      A,C
   \   0071  C601              ADD     A,1
   \   0073  320000            LD      (fselDirLayer),A
   \   0076            ?0016:
     80                      if(FS_CD(location->path))
   \   0076  210E00            LD      HL,14
   \   0079  DD4EFC            LD      C,(IX-4)
   \   007C  DD46FD            LD      B,(IX-3)
   \   007F  09                ADD     HL,BC
   \   0080  EB                EX      DE,HL
   \   0081  CD0000            CALL    LWRD FS_CD
   \   0084  B7                OR      A
   \   0085  2810              JR      Z,?0018
   \   0087            ?0017:
     81                      {
     82                          fselDirLayer=fselDirLayer+1;        
   \   0087  3A0000            LD      A,(fselDirLayer)
   \   008A  C601              ADD     A,1
   \   008C  320000            LD      (fselDirLayer),A
     83                          fselDirNo[fselDirLayer] = 0;     //将当前目录号重新置为0(即目录首)    
   \   008F  4F                LD      C,A
   \   0090  0600              LD      B,0
   \   0092  210000            LD      HL,fselDirNo
   \   0095  09                ADD     HL,BC
   \   0096  70                LD      (HL),B
   \   0097            ?0018:
   \   0097            ?0014:
   \   0097            ?0012:
     84                      }
     85                  }
     86              }
     87          
     88              init_dir_buf();        //初始化目录查询表并计算有效目录总数和文件总数
   \   0097  3E00              LD      A,BYTE3 init_dir_buf
   \   0099  210000            LD      HL,LWRD init_dir_buf
   \   009C  CD0000            CALL    LWRD ?BANK_CALL_DIRECT_L08
     89              
     90              list_active=0;    
   \   009F  210000            LD      HL,0
   \   00A2  220000            LD      (list_active),HL
     91              cur_group=0;
   \   00A5  220000            LD      (cur_group),HL
     92                  
     93              top=0; //顶的序号
     94              bottom=top+GroupDefine-1;                  //底的序号
   \   00A8  FD210500          LD      IY,5
     95              if(bottom>(list_total_num-1)) 
   \   00AC  AF                XOR     A
   \   00AD  DD77E8            LD      (IX-24),A
   \   00B0  DD77E9            LD      (IX-23),A
   \   00B3  2B                DEC     HL
   \   00B4  ED4B0000          LD      BC,(list_total_num)
   \   00B8  09                ADD     HL,BC
   \   00B9  FDE5              PUSH    IY
   \   00BB  C1                POP     BC
   \   00BC  A7                AND     A
   \   00BD  ED42              SBC     HL,BC
   \   00BF  300B              JR      NC,?0020
   \   00C1            ?0019:
     96                  bottom=list_total_num-1;
   \   00C1  21FFFF            LD      HL,65535
   \   00C4  ED4B0000          LD      BC,(list_total_num)
   \   00C8  09                ADD     HL,BC
   \   00C9  E5                PUSH    HL
   \   00CA  FDE1              POP     IY
   \   00CC            ?0020:
     97           
     98              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  FDE5              PUSH    IY
   \   00D6  C1                POP     BC
   \   00D7  5F                LD      E,A
   \   00D8  53                LD      D,E
   \   00D9  CD5204            CALL    LWRD ?0127
   \   00DC  E1                POP     HL
   \   00DD  E1                POP     HL
     99          
    100              ShowDirectory(top,bottom,list_active,list_active,string_id,DiskFlag);

⌨️ 快捷键说明

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