ui_delete3.s01

来自「炬力方案176*132软件源码,适用于AK1025」· S01 代码 · 共 642 行

S01
642
字号
	NAME	ui_delete3(17)
	RSEG	COM_CTRL(0)
	RSEG	CONST(0)
	RSEG	IDM_COM_FSL_D(0)
	EXTERN	FS_GetName
	EXTERN	PutS
	EXTERN	ResShowMultiString
	EXTERN	ResShowPic
	EXTERN	SetBackgdColor
	EXTERN	SetPenColor
	EXTERN	SetTextPos
	PUBLIC	ShowFilelist
	PUBLIC	com_delname
	PUBLIC	delete_text
	EXTERN	fselGetByNO
	EXTERN	menu_pos_list
	PUBLIC	read_idm_data_filelist
	PUBLIC	reinit_idm_buf_filelist
	PUBLIC	show_delete_menu
	EXTERN	ui_popup_list
	EXTERN	unitochar
	PUBLIC	write_idm_data_filelist
	EXTERN	?CLZ80B_4_04_L00
	EXTERN	?SS_MOD_L02
	EXTERN	?S_MUL_L02
	EXTERN	?SS_CMP_L02
	EXTERN	?BANK_CALL_DIRECT_L08
	EXTERN	?BANK_LEAVE_DIRECT_L08
	EXTERN	?BANK_FAST_LEAVE_L08
	EXTERN	?ENT_AUTO_DIRECT_L09
	RSEG	COM_CTRL
write_idm_data_filelist:
; 1.	/*
; 2.	*******************************************************************************
; 3.	*                ACTOS AP
; 4.	*        ap common lib file, part 2
; 5.	*
; 6.	*        (c) Copyright, Actions Co,Ld.                             
; 7.	*             All Right Reserved                          
; 8.	*
; 9.	*  $Id: ui_delete3.c,v 1.1.1.1 2006/05/22 03:23:59 selina Exp $
; 10.	*******************************************************************************
; 11.	*/ 
; 12.	#pragma codeseg(COM_CTRL)
; 13.	
; 14.	#include "ap_common.h"
; 15.	#pragma memory=dataseg(IDM_COM_FSL_D)
; 16.	char com_delname[6][50];
; 17.	#pragma memory=default
; 18.	extern const char menu_pos_list[6];
; 19.	extern const WORD menulist_bck_pic[6];
; 20.	const WORD delete_text[2] ={DELENO,DELEYES};
; 21.	
; 22.	//向IDM数组写数据
; 23.	BOOL write_idm_data_filelist(char *name, int count)
; 24.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	0
; 25.	     byte status;
; 26.	     status = input8(0x05);
	IN	A,(5)
	LD	E,A
; 27.	     output8(0x05, 0xf6);
	LD	A,246
	OUT	(5),A
; 28.	     memcpy( com_delname[count], name, 50);
	PUSH	DE
	LD	BC,50
	LD	E,(IX+4)
	LD	D,(IX+5)
	CALL	LWRD ?S_MUL_L02
	LD	HL,com_delname
	ADD	HL,DE
	EX	DE,HL
	LD	L,(IX+2)
	LD	H,(IX+3)
?0025:
	LDIR
	POP	DE
; 29.	     output8(0x05, status);
	LD	A,E
	OUT	(5),A
; 30.	}
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
reinit_idm_buf_filelist:
; 31.	
; 32.	//取一屏数据到IDM数组中
; 33.	void reinit_idm_buf_filelist(int top, int bottom,BYTE string_id)
; 34.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	-64
; 35.	    int i;
; 36.	    char NameNum;
; 37.	    char name_buf[12];
; 38.	    char Longnamebuf[50];
; 39.	    memcpy(name_buf,name_buf,12);
	LD	BC,12
	LD	HL,52
	ADD	HL,SP
	EX	DE,HL
	LD	HL,52
	ADD	HL,SP
	LDIR
; 40.	    for(i = top; i <= bottom; i++)
	LD	E,(IX+2)
	LD	D,(IX+3)
?0003:
	LD	C,E
	LD	B,D
	LD	L,(IX+4)
	LD	H,(IX+5)
	CALL	LWRD ?SS_CMP_L02
	JR	C,?0002
?0004:
; 41.	     {
; 42.	        fselGetByNO(name_buf,i+1);
	PUSH	DE
	INC	BC
	LD	HL,54
	ADD	HL,SP
	EX	DE,HL
	LD	A,BYTE3 fselGetByNO
	LD	HL,LWRD fselGetByNO
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 43.	        memcpy(Longnamebuf,name_buf,12);
	LD	BC,12
	LD	HL,4
	ADD	HL,SP
	EX	DE,HL
	LD	HL,54
	ADD	HL,SP
	LDIR
; 44.	        NameNum=FS_GetName(Longnamebuf,24);
	LD	C,24
	LD	HL,4
	ADD	HL,SP
	EX	DE,HL
	CALL	LWRD FS_GetName
	POP	DE
; 45.	        if(NameNum!=0)
	OR	A
	PUSH	DE
	JR	Z,?0007
?0006:
; 46.	        {
; 47.	            unitochar(Longnamebuf,NameNum*2+2,string_id);
	LD	L,(IX+10)
	PUSH	HL
	LD	L,A
	LD	H,0
	ADD	HL,HL
	LD	C,L
	LD	B,H
	INC	BC
	INC	BC
	LD	HL,6
	ADD	HL,SP
	EX	DE,HL
	LD	A,BYTE3 unitochar
	LD	HL,LWRD unitochar
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
	POP	DE
; 48.	        }
; 49.	        else
	JR	?0008
?0007:
; 50.	            {
; 51.	             memcpy(Longnamebuf,name_buf,11);    //get one usful record
	LD	BC,11
	LD	HL,4
	ADD	HL,SP
	EX	DE,HL
	LD	HL,54
	ADD	HL,SP
	LDIR
	POP	DE
; 52.	             Longnamebuf[11]=0;
	LD	(IX-51),B
; 53.	             Longnamebuf[12]=0;
	LD	(IX-50),B
?0008:
; 54.	            }
; 55.	
; 56.	        write_idm_data_filelist(Longnamebuf, i - top);
	PUSH	DE
	LD	C,(IX+2)
	LD	B,(IX+3)
	EX	DE,HL
	AND	A
	SBC	HL,BC
	LD	C,L
	LD	B,H
	LD	HL,4
	ADD	HL,SP
	EX	DE,HL
	LD	A,BYTE3 write_idm_data_filelist
	LD	HL,LWRD write_idm_data_filelist
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	DE
	INC	DE
; 57.	
; 58.	    }
; 59.	}
	JP	LWRD ?0003
?0002:
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
read_idm_data_filelist:
; 60.	
; 61.	//读数据到数组name中
; 62.	void read_idm_data_filelist(char *name, int count)
; 63.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	0
; 64.	     byte status;
; 65.	     status = input8(0x05);
	IN	A,(5)
	LD	E,A
; 66.	     output8(0x05 ,0xf6);
	LD	A,246
	OUT	(5),A
; 67.	     memcpy(name, com_delname[count], 50);
	PUSH	DE
	LD	BC,50
	LD	E,(IX+2)
	LD	D,(IX+3)
	PUSH	DE
	LD	E,(IX+4)
	LD	D,(IX+5)
	CALL	LWRD ?S_MUL_L02
	LD	HL,com_delname
	ADD	HL,DE
	POP	DE
	JP	LWRD ?0025
; 68.	     output8(0x05, status);
; 69.	}
ShowFilelist:
; 70.	
; 71.	
; 72.	/********************************************************************************
; 73.	* Description : show the directory.
; 74.	*
; 75.	* Arguments  :
; 76.	*            location: get thedisk type
; 77.	*            Invpath: the "\" or name
; 78.	*            Namebuf:the string you will display
; 79.	*            type : show file kind
; 80.	*            string_id: language type
; 81.	* Returns     :
; 82.	*            other:    Successful
; 83.	*            0:    Fail, detail information in fselError
; 84.	* Notes       :  only display the valid directory
; 85.	*
; 86.	********************************************************************************/
; 87.	void ShowFilelist(int top,int bottom,int Old_active,int active,BYTE string_id)
; 88.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	-52
	PUSH	IY
; 89.	
; 90.	    int i,tmp;
; 91.	    char        Longnamebuf[50];
; 92.	    // SetAsciiFont(FONT_TYPE_SMALL);
; 93.	    ///-SetTextOutMode(1);
; 94.	
; 95.	 if(Old_active!=active)
	LD	L,(IX+12)
	LD	H,(IX+13)
	LD	E,(IX+10)
	LD	D,(IX+11)
	AND	A
	SBC	HL,DE
	JP	Z,?0010
?0009:
; 96.	  {
; 97.	     //清除旧的活动列表项
; 98.	     tmp=Old_active%6;
	LD	BC,6
	CALL	LWRD ?0026
; 99.	     ResShowPic(FILEBCK1, 12, menu_pos_list[tmp]-1);
	ADD	A,255
	LD	C,A
	PUSH	BC
	LD	C,12
	LD	DE,45
	CALL	LWRD ?0027
	POP	AF
; 100.	     ResShowPic(MFILE,0,menu_pos_list[tmp]+2);
	LD	HL,menu_pos_list
	PUSH	IY
	POP	BC
	ADD	HL,BC
	LD	A,(HL)
	ADD	A,2
	LD	E,A
	PUSH	DE
	CALL	LWRD ?0028
	POP	AF
; 101.	     SetTextPos(12, menu_pos_list[tmp]);
	CALL	LWRD ?0030
; 102.	     read_idm_data_filelist(Longnamebuf,tmp);
	ADD	HL,SP
	CALL	LWRD ?0031
; 103.	     SetPenColor(Color_BLACK_def);                     //取列表名
	CALL	LWRD ?0032
; 104.	     SetBackgdColor(Color_MENU_def);
	CALL	LWRD SetBackgdColor
; 105.	     PutS(Longnamebuf, -1);
	LD	C,255
	LD	HL,4
	ADD	HL,SP
	EX	DE,HL
	CALL	LWRD PutS
; 106.	
; 107.	     //显示当前活动项
; 108.	     tmp=active%6;
	LD	BC,6
	LD	E,(IX+12)
	LD	D,(IX+13)
	CALL	LWRD ?0026
; 109.	     ResShowPic(MFILE,0,menu_pos_list[tmp]+2);
	ADD	A,2
	LD	C,A
	PUSH	BC
	LD	C,B
	CALL	LWRD ?0029
	POP	AF
; 110.	     ResShowPic(FILEBCK,  12, menu_pos_list[tmp]-1);
	LD	HL,menu_pos_list
	PUSH	IY
	POP	BC
	ADD	HL,BC
	LD	A,(HL)
	ADD	A,255
	LD	E,A
	PUSH	DE
	LD	C,12
	LD	DE,44
	CALL	LWRD ?0027
	POP	AF
; 111.	     SetTextPos(12, menu_pos_list[tmp]);
	CALL	LWRD ?0030
; 112.	     read_idm_data_filelist(Longnamebuf,tmp);
	ADD	HL,SP
	CALL	LWRD ?0031
; 113.	     SetPenColor(Color_WHITE_def);                     //取列表名
	LD	BC,0
	LD	DE,65535
	CALL	LWRD SetPenColor
; 114.	     SetBackgdColor(0x00003358);
	LD	BC,0
	LD	DE,13144
	CALL	LWRD SetBackgdColor
; 115.	     PutS(Longnamebuf, -1);
	LD	C,255
	LD	HL,4
	ADD	HL,SP
	EX	DE,HL
	CALL	LWRD PutS
; 116.	  }
; 117.	 else  //if(Old_active==active)               刷新一页屏
	JP	LWRD ?0012
?0010:
; 118.	  {
; 119.	    ///-SetTextOutMode(1);
; 120.	    SetBackgdColor(0x0000df1c);
	LD	C,L
	LD	B,H
	LD	DE,57116
	CALL	LWRD SetBackgdColor
; 121.	    ResShowPic(MENUTWO1,0,0);
	LD	C,0
	PUSH	BC
	LD	DE,196
	CALL	LWRD ?0027
	POP	AF
; 122.	    SetPenColor(Color_BLACK_def);
	LD	BC,0
	LD	E,C
	LD	D,B
	CALL	LWRD SetPenColor
; 123.	    ResShowMultiString(CDELFILE,string_id, 255, 1);
	LD	C,1
	PUSH	BC
	LD	C,255
	PUSH	BC
	LD	C,(IX+14)
	LD	DE,574
	LD	A,BYTE3 ResShowMultiString
	LD	HL,LWRD ResShowMultiString
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
	POP	AF
; 124.	    SetBackgdColor(Color_MENU_def);
	LD	BC,0
	LD	DE,65535
	CALL	LWRD SetBackgdColor
; 125.	    ///-SetTextOutMode(0);
; 126.	    //显示列表名
; 127.	      for(i=top;i<=bottom;i++)
	LD	L,(IX+2)
	LD	H,(IX+3)
	LD	(IX-52),L
	LD	(IX-51),H
?0013:
	LD	C,(IX-52)
	LD	B,(IX-51)
	LD	L,(IX+4)
	LD	H,(IX+5)
	CALL	LWRD ?SS_CMP_L02
	JP	C,?0012
?0014:
; 128.	      {
; 129.	       tmp=i%6;
	LD	BC,6
	LD	E,(IX-52)
	LD	D,(IX-51)
	CALL	LWRD ?SS_MOD_L02
	PUSH	DE
	POP	IY
; 130.	       if(i==active)
	LD	L,(IX+12)
	LD	H,(IX+13)
	LD	C,(IX-52)
	LD	B,(IX-51)
	SBC	HL,BC
	JR	NZ,?0017
?0016:
; 131.	       {
; 132.	                ResShowPic(FILEBCK,  12, menu_pos_list[i-top]-1);
	LD	C,(IX+2)
	LD	B,(IX+3)
	LD	L,(IX-52)
	LD	H,(IX-51)
	AND	A
	SBC	HL,BC
	LD	BC,menu_pos_list
	ADD	HL,BC
	LD	A,(HL)
	ADD	A,255
	LD	C,A
	PUSH	BC
	LD	C,12
	LD	DE,44
	CALL	LWRD ?0027
	POP	AF
; 133.	                SetPenColor(Color_WHITE_def);
	LD	BC,0
	LD	DE,65535
	CALL	LWRD SetPenColor
; 134.	                SetBackgdColor(0x00003358);
	LD	BC,0
	LD	DE,13144
	JR	?0024
; 135.	       }
; 136.	       else
?0017:
; 137.	       {
; 138.	                                        SetPenColor(Color_BLACK_def);
	CALL	LWRD ?0032
; 139.	                SetBackgdColor(Color_MENU_def);
?0024:
	CALL	LWRD SetBackgdColor
?0018:
; 140.	       }
; 141.	       output8(0x4e,input8(0x4e) | 0x08);
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 142.	       read_idm_data_filelist(Longnamebuf,tmp);
	PUSH	IY
	POP	BC
	LD	HL,4
	ADD	HL,SP
	CALL	LWRD ?0031
; 143.	       ResShowPic(MFILE,0,menu_pos_list[i-top]+2);
	LD	C,(IX+2)
	LD	B,(IX+3)
	LD	L,(IX-52)
	LD	H,(IX-51)
	AND	A
	SBC	HL,BC
	LD	DE,menu_pos_list
	ADD	HL,DE
	LD	A,(HL)
	ADD	A,2
	LD	E,A
	PUSH	DE
	CALL	LWRD ?0028
	POP	AF
; 144.	       SetTextPos(12, menu_pos_list[i-top]);
	LD	C,(IX+2)
	LD	B,(IX+3)
	LD	L,(IX-52)
	LD	H,(IX-51)
	AND	A
	SBC	HL,BC
	LD	BC,menu_pos_list
	ADD	HL,BC
	LD	C,(HL)
	LD	E,12
	CALL	LWRD SetTextPos
; 145.	       PutS(Longnamebuf,-1);
	LD	C,255
	LD	HL,4
	ADD	HL,SP
	EX	DE,HL
	CALL	LWRD PutS
	INC	(IX-52)
	JR	NZ,?0023
	INC	(IX-51)
?0023:
; 146.	     }
; 147.	
; 148.	  } //else
	JP	LWRD ?0013
?0012:
?0011:
; 149.	   SetPenColor(Color_BLACK_def);
	LD	BC,0
	LD	E,C
	LD	D,B
	CALL	LWRD SetPenColor
; 150.	}
	POP	IY
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
?0026:
	CALL	LWRD ?SS_MOD_L02
	PUSH	DE
	POP	IY
	LD	HL,menu_pos_list
	ADD	HL,DE
	LD	A,(HL)
	RET
?0028:
	LD	C,0
?0029:
	LD	DE,198
?0027:
	LD	A,BYTE3 ResShowPic
	LD	HL,LWRD ResShowPic
	JP	LWRD ?BANK_CALL_DIRECT_L08
?0030:
	LD	HL,menu_pos_list
	PUSH	IY
	POP	BC
	ADD	HL,BC
	LD	C,(HL)
	LD	E,12
	CALL	LWRD SetTextPos
	PUSH	IY
	POP	BC
	LD	HL,4
	RET
?0031:
	EX	DE,HL
	LD	A,BYTE3 read_idm_data_filelist
	LD	HL,LWRD read_idm_data_filelist
	JP	LWRD ?BANK_CALL_DIRECT_L08
?0032:
	LD	BC,0
	LD	E,C
	LD	D,B
	CALL	LWRD SetPenColor
	LD	BC,0
	LD	DE,65535
	RET
show_delete_menu:
; 151.	
; 152.	////////////////////////
; 153.	
; 154.	////////////显示删除确认菜单
; 155.	int show_delete_menu(BYTE string_id)
; 156.	{
	CALL	LWRD ?ENT_AUTO_DIRECT_L09
	DEFW	-10
	PUSH	IY
; 157.	    int result;
; 158.	    pop_up_list_t list;
; 159.	    list.strid = delete_text;
	LD	(IX-10),LOW(delete_text)
	LD	(IX-9),HIGH(delete_text)
; 160.	    list.total = 2;
	LD	(IX-8),2
	LD	(IX-7),0
; 161.	    list.active = 0;
	XOR	A
	LD	(IX-6),A
	LD	(IX-5),A
; 162.	    list.string_id =string_id;
	LD	B,(IX+2)
	LD	(IX-2),B
; 163.	    list.headid = CDELFILE;
	LD	(IX-4),62
	LD	(IX-3),2
; 164.	    result= ui_popup_list(&list, NULL);
	LD	C,A
	PUSH	BC
	LD	L,C
	LD	H,C
	PUSH	HL
	LD	L,6
	ADD	HL,SP
	EX	DE,HL
	LD	A,BYTE3 ui_popup_list
	LD	HL,LWRD ui_popup_list
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
	POP	AF
	PUSH	HL
	POP	IY
; 165.	    if((result==0)&&(list.active==0))
	LD	A,L
	OR	H
	JR	NZ,?0020
	LD	A,(IX-6)
	LD	H,(IX-5)
	OR	H
	JR	NZ,?0020
?0022:
?0021:
?0019:
; 166.	    {
; 167.	     result=RESULT_IGNORE;
	LD	IY,52
?0020:
; 168.	    }
; 169.	    return result;
	PUSH	IY
	POP	HL
; 170.	}
	POP	IY
	JP	LWRD ?BANK_LEAVE_DIRECT_L08
	RSEG	CONST
delete_text:
	DEFW	632
	DEFW	631
	RSEG	IDM_COM_FSL_D
com_delname:
	DEFS	300
	END

⌨️ 快捷键说明

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