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

📄 main.s01

📁 炬力方案176*132软件源码,适用于AK1025
💻 S01
字号:
	NAME	main(17)
	RSEG	CODE(0)
	RSEG	CSTR(0)
	RSEG	UDATA0(0)
	RSEG	IDATA0(0)
	RSEG	CDATA0(0)
	PUBLIC	ActiveDriveOK
	EXTERN	ClearScreen
	EXTERN	DRV_ActiveDrive
	EXTERN	DRV_ActiveUD
	EXTERN	DRV_DetectUD
	EXTERN	GetDefaultComval
	EXTERN	InitFileSelector
	EXTERN	ResClose
	EXTERN	ResOpen
	EXTERN	ResShowMultiString
	EXTERN	SetBackgdColor
	EXTERN	SetPenColor
	EXTERN	VMRead
	EXTERN	VMWrite
	EXTERN	ap_get_message
	EXTERN	ap_message_init
	EXTERN	ap_sleep
	EXTERN	fselGetLocation
	PUBLIC	g_DiskStateFlag
	PUBLIC	g_comval
	PUBLIC	g_from_browser
	PUBLIC	g_menu_active
	PUBLIC	g_reader_vars
	PUBLIC	main
	PUBLIC	read_var
	EXTERN	res_fp
	EXTERN	show_stop
	EXTERN	ui_show_msg
	PUBLIC	val_p
	EXTERN	?CLZ80B_4_04_L00
	EXTERN	?BANK_CALL_DIRECT_L08
	EXTERN	?BANK_FAST_LEAVE_L08
	EXTERN	?STRCPY_L11
	RSEG	CODE
read_var:
; 1.	/*********************************
; 2.	* FileName: Main.c
; 3.	* Write By: 
; 4.	* Date    : 2006-4-11 18:27
; 5.	*
; 6.	*Buglist  :
; 7.	*
; 8.	*
; 9.	**********************************/
; 10.	
; 11.	
; 12.	#include "actos.h"
; 13.	#include  "enhanced.h"
; 14.	#include "ap_common.h"
; 15.	#include  "display.h"
; 16.	#include "ap_reader.h"
; 17.	
; 18.	
; 19.	bool g_menu_active;     //为1进入MENU菜单,主要用来丢掉从目录选择时长按mode键返回 
; 20.	comval_t g_comval;  
; 21.	reader_vars_t g_reader_vars;    
; 22.	char *val_p;  
; 23.	bool ActiveDriveOK;//磁盘可用标志
; 24.	BYTE g_DiskStateFlag = 0;
; 25.	bool g_from_browser = FALSE;
; 26.	/*************************************
; 27.	* Function name : ViewApVarRead()
; 28.	* Author        : Jack lee
; 29.	* Date          :2004-9-30 17:34
; 30.	*
; 31.	*
; 32.	*
; 33.	*
; 34.	****************************************/
; 35.	
; 36.	void read_var(void)
; 37.	{
	PUSH	BC
	PUSH	DE
	PUSH	IX
	LD	HL,65490
	ADD	HL,SP
	LD	SP,HL
; 38.	    int result;
; 39.	    browser_vars_t temp_browser_vars;
; 40.	    result = VMRead(&g_comval, VM_SYSTEM, sizeof(g_comval)); // read the information of system
	LD	HL,32
	PUSH	HL
	LD	BC,512
	LD	DE,g_comval
	CALL	LWRD VMRead
	POP	HL
; 41.	    
; 42.	   //check if valid
; 43.	    if(g_comval.magic != MAGIC_COMVAL)
	LD	HL,57005
	LD	BC,(g_comval)
	AND	A
	SBC	HL,BC
	JR	Z,?0003
?0002:
; 44.	    {
; 45.	        DUMP_STRING("comval init-ed!");
; 46.	
; 47.	        //COMVAL_INIT(g_comval);
; 48.	        GetDefaultComval(&g_comval);
	LD	DE,g_comval
	CALL	LWRD GetDefaultComval
?0003:
; 49.	    }
; 50.	
; 51.	    //init message for auto standby
; 52.	    ap_message_init(&g_comval);
	LD	DE,g_comval
	LD	A,BYTE3 ap_message_init
	LD	HL,LWRD ap_message_init
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 53.	    
; 54.	    result = VMRead(&g_reader_vars, VM_AP_READER, sizeof(g_reader_vars)); //read the setting of user part1  
	LD	HL,620
	PUSH	HL
	LD	BC,17408
	LD	DE,g_reader_vars
	CALL	LWRD VMRead
	POP	HL
; 55.	    
; 56.	    val_p=(char *)&g_reader_vars; 
	LD	HL,g_reader_vars
	LD	(val_p),HL
; 57.	    
; 58.	    result = VMRead(val_p+512, VM_AP_READER1, sizeof(g_reader_vars)-512); //read the setting of user part2 
	LD	DE,108
	PUSH	DE
	LD	BC,17920
	LD	A,2
	ADD	A,H
	LD	H,A
	EX	DE,HL
	CALL	LWRD VMRead
	POP	HL
; 59.	     
; 60.	    if(g_reader_vars.magic != MAGIC_READER)
	LD	HL,29816
	LD	BC,(g_reader_vars)
	AND	A
	SBC	HL,BC
	JR	Z,?0005
?0004:
; 61.	        {           
; 62.	            g_reader_vars.magic = MAGIC_READER;
	LD	HL,29816
	LD	(g_reader_vars),HL
; 63.	            g_reader_vars.playflag = 0;
	XOR	A
	LD	(g_reader_vars+2),A
; 64.	            g_reader_vars.autoplaytime = 1;            
	LD	A,1
	LD	(g_reader_vars+3),A
; 65.	
; 66.	            g_reader_vars.g_txt.PrevSeek=0;
	LD	BC,0
	LD	L,C
	LD	H,B
	LD	(g_reader_vars+55),HL
	LD	(g_reader_vars+57),BC
; 67.	            g_reader_vars.g_txt.CurrentSeek=0;
	LD	(g_reader_vars+59),HL
	LD	(g_reader_vars+61),BC
; 68.	            
; 69.	            g_reader_vars.location.disk = 'C';
	LD	A,67
	LD	(g_reader_vars+6),A
; 70.	            strcpy(g_reader_vars.location.path, FS_CD_ROOT);
	LD	DE,?0006
	LD	HL,g_reader_vars+20
	CALL	LWRD ?STRCPY_L11
; 71.	            g_reader_vars.location.filename[0] = 0;
	XOR	A
	LD	(g_reader_vars+32),A
?0005:
; 72.	        }
; 73.	    g_reader_vars.g_txt.langid = g_comval.langid;
	LD	A,(g_comval+12)
	LD	(g_reader_vars+67),A
; 74.	    if(g_from_browser)
	LD	A,(g_from_browser)
	OR	A
	JR	Z,?0008
?0007:
; 75.	    {
; 76.	        VMRead(&temp_browser_vars, VM_AP_BROWSER, sizeof(browser_vars_t));
	LD	HL,45
	PUSH	HL
	LD	BC,19456
	LD	L,2
	ADD	HL,SP
	EX	DE,HL
	CALL	LWRD VMRead
	POP	HL
; 77.	        memcpy(&g_reader_vars.location, &temp_browser_vars.location, sizeof(file_location_t));
	LD	BC,43
	LD	DE,g_reader_vars+6
	LD	L,B
	LD	H,B
	ADD	HL,SP
	LD	C,2
	ADD	HL,BC
	LD	C,43
	LDIR
; 78.	        g_reader_vars.g_txt.PrevSeek=0;
	LD	L,C
	LD	H,B
	LD	(g_reader_vars+55),HL
	LD	(g_reader_vars+57),BC
; 79.	        g_reader_vars.g_txt.CurrentSeek=0;
	LD	(g_reader_vars+59),HL
	LD	(g_reader_vars+61),BC
?0008:
; 80.	    }
; 81.	        
; 82.	}
	LD	HL,46
	ADD	HL,SP
	LD	SP,HL
	POP	IX
	POP	DE
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
main:
; 83.	
; 84.	
; 85.	/*****************************************************
; 86.	*function name:int main(int param)
; 87.	*write by jacklee
; 88.	*date 2005-3-21 9:29
; 89.	*Description:
; 90.	* this function control the jpeg decoding system
; 91.	* 
; 92.	*****************************************************/
; 93.	int main(int param)
; 94.	{        
	PUSH	BC
	PUSH	IX
	PUSH	DE
; 95.	        int result;
; 96.	        DC  oldDC_sav;    
; 97.	        
; 98.	        if(param)
	LD	A,E
	OR	D
	JR	Z,?0010
?0009:
; 99.	        {
; 100.	            g_from_browser = TRUE;
	LD	A,1
	LD	(g_from_browser),A
?0010:
; 101.	        }
; 102.	        //install drivers
; 103.	        DRV_ActiveUD(0,MODE_SLOW);
	LD	C,1
	LD	E,0
	CALL	LWRD DRV_ActiveUD
; 104.	        res_fp = ResOpen("ui30.res"); 
	LD	DE,?0011
	LD	A,BYTE3 ResOpen
	LD	HL,LWRD ResOpen
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	LD	(res_fp),HL
; 105.	        if(!res_fp)
	LD	A,L
	OR	H
	JR	NZ,?0013
?0012:
; 106.	        {
; 107.	               ResClose(res_fp); 
	EX	DE,HL
	LD	A,BYTE3 ResClose
	LD	HL,LWRD ResClose
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 108.	               return RESULT_MAIN;
	LD	HL,10
; 109.	        }
	JP	LWRD ?0035
?0013:
; 110.	        //read var  
; 111.	        read_var();    
	LD	A,BYTE3 read_var
	LD	HL,LWRD read_var
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 112.	        ActiveDriveOK = DRV_ActiveDrive('C', MODE_SLOW); //04-2-28 16:29
	LD	C,1
	LD	E,67
	CALL	LWRD DRV_ActiveDrive
	LD	(ActiveDriveOK),A
; 113.	        if (!ActiveDriveOK)
	OR	A
	JR	NZ,?0015
?0014:
; 114.	        {
; 115.	            ui_show_msg (MREADERR, MREADERR, g_comval.langid);        //temp ybfu
	LD	BC,(g_comval+12)
	LD	B,A
	PUSH	BC
	LD	BC,508
	LD	E,C
	LD	D,B
	LD	A,BYTE3 ui_show_msg
	LD	HL,LWRD ui_show_msg
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
?0017:
; 116.	            while( ap_get_message() != NULL );//清空消息池,确保DELAY时间准确
	CALL	LWRD ap_get_message
	OR	A
	JR	NZ,?0017
?0018:
?0016:
; 117.	            ap_sleep(4);
	LD	DE,4
	LD	A,BYTE3 ap_sleep
	LD	HL,LWRD ap_sleep
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 118.	            g_reader_vars.location.disk='H';          //磁盘出错 从卡上读文件  zxs  add
	LD	A,72
	LD	(g_reader_vars+6),A
; 119.	        }
; 120.	        else
	JR	?0019
?0015:
; 121.	            g_DiskStateFlag |= SetDiskOKFlag_def;//标志 flash 已格式化
	LD	HL,g_DiskStateFlag
	SET	7,(HL)
?0019:
; 122.	
; 123.	        if (DRV_DetectUD(1) == 0x20)
	LD	E,1
	CALL	LWRD DRV_DetectUD
	CP	32
	JR	NZ,?0021
?0020:
; 124.	        { //有卡
; 125.	            DRV_ActiveUD(1,MODE_SLOW);
	LD	C,1
	LD	E,C
	CALL	LWRD DRV_ActiveUD
; 126.	            if (!DRV_ActiveDrive('H', MODE_SLOW))
	LD	C,1
	LD	E,72
	CALL	LWRD DRV_ActiveDrive
	OR	A
	JR	NZ,?0023
?0022:
; 127.	            {
; 128.	                ui_show_msg (CREADERR, CREADERR, g_comval.langid);        //temp ybfu
	LD	BC,(g_comval+12)
	LD	B,A
	PUSH	BC
	LD	BC,630
	LD	E,C
	LD	D,B
	LD	A,BYTE3 ui_show_msg
	LD	HL,LWRD ui_show_msg
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
?0025:
; 129.	                while( ap_get_message() != NULL );      //清空消息池,确保DELAY时间准确
	CALL	LWRD ap_get_message
	OR	A
	JR	NZ,?0025
?0026:
?0024:
; 130.	                ap_sleep(4);
	LD	DE,4
	LD	A,BYTE3 ap_sleep
	LD	HL,LWRD ap_sleep
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 131.	                g_reader_vars.location.disk='C';      //卡出错从Flash磁盘读文件
	LD	A,67
	LD	(g_reader_vars+6),A
; 132.	                if (!ActiveDriveOK)
	LD	A,(ActiveDriveOK)
	OR	A
	JR	NZ,?0032
?0027:
; 133.	                {
; 134.	                    ResClose(res_fp);
	JR	?0037
; 135.	                    return 0;
; 136.	                }
?0028:
; 137.	            }
; 138.	            else
?0023:
; 139.	                g_DiskStateFlag |= SetCardOKFlag_def;//标志 card 已格式化
	LD	HL,g_DiskStateFlag
	SET	3,(HL)
?0029:
; 140.	        }
; 141.	        else
	JR	?0032
?0021:
; 142.	        { //没卡
; 143.	            g_reader_vars.location.disk='C';      //卡出错从Flash磁盘读文件
	LD	A,67
	LD	(g_reader_vars+6),A
; 144.	            if (!ActiveDriveOK)
	LD	A,(ActiveDriveOK)
	OR	A
	JR	NZ,?0032
?0031:
; 145.	            {
; 146.	                ResClose(res_fp);
?0037:
	LD	DE,(res_fp)
	LD	A,BYTE3 ResClose
	LD	HL,LWRD ResClose
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 147.	                return 0;
	LD	HL,0
; 148.	            }
	JP	LWRD ?0035
?0032:
?0030:
; 149.	        }
; 150.	
; 151.	        SetPenColor(Color_BLACK_def);
	LD	BC,0
	LD	E,C
	LD	D,B
	CALL	LWRD SetPenColor
; 152.	        SetBackgdColor(Color_MENU_def);
	LD	BC,0
	LD	DE,65535
	CALL	LWRD SetBackgdColor
; 153.	        //show initializing...
; 154.	        ClearScreen(NULL);
	LD	DE,0
	CALL	LWRD ClearScreen
; 155.	        ResShowMultiString(WAITPASS, g_comval.langid, 255, 58);   
	LD	C,58
	PUSH	BC
	LD	C,255
	PUSH	BC
	LD	BC,(g_comval+12)
	LD	DE,600
	LD	A,BYTE3 ResShowMultiString
	LD	HL,LWRD ResShowMultiString
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	POP	AF
	POP	AF
; 156.	        result = InitFileSelector();
	LD	A,BYTE3 InitFileSelector
	LD	HL,LWRD InitFileSelector
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	PUSH	HL
	POP	IX
; 157.	        if(result!=0)
	LD	A,L
	OR	H
	JR	Z,?0034
?0033:
; 158.	        {
; 159.	            result=show_stop();
	LD	A,BYTE3 show_stop
	LD	HL,LWRD show_stop
	CALL	LWRD ?BANK_CALL_DIRECT_L08
	PUSH	HL
	POP	IX
?0034:
; 160.	        }
; 161.	        
; 162.	        ap_sleep(4);
	LD	DE,4
	LD	A,BYTE3 ap_sleep
	LD	HL,LWRD ap_sleep
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 163.	        output8(0x4e,input8(0x4e)|0x8); 
	IN	A,(78)
	SET	3,A
	OUT	(78),A
; 164.	        ResClose(res_fp);
	LD	DE,(res_fp)
	LD	A,BYTE3 ResClose
	LD	HL,LWRD ResClose
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 165.	        fselGetLocation(& g_reader_vars.location);
	LD	DE,g_reader_vars+6
	LD	A,BYTE3 fselGetLocation
	LD	HL,LWRD fselGetLocation
	CALL	LWRD ?BANK_CALL_DIRECT_L08
; 166.	        VMWrite(&g_reader_vars, VM_AP_READER);      //保存前512字节
	LD	BC,17408
	LD	DE,g_reader_vars
	CALL	LWRD VMWrite
; 167.	        
; 168.	        val_p= (char *)&g_reader_vars;      
	LD	HL,g_reader_vars
	LD	(val_p),HL
; 169.	        
; 170.	        VMWrite(val_p+512, VM_AP_READER1);        //保存后512字节
	LD	BC,17920
	LD	A,2
	ADD	A,H
	LD	H,A
	EX	DE,HL
	CALL	LWRD VMWrite
; 171.	        return result;
	PUSH	IX
	POP	HL
; 172.	}
?0035:
	POP	AF
	POP	IX
	POP	BC
	JP	LWRD ?BANK_FAST_LEAVE_L08
	RSEG	CSTR
?0006:
	DEFB	':'
	DEFB	0
?0011:
	DEFB	'ui30.res'
	DEFB	0
	RSEG	UDATA0
g_menu_active:
	DEFS	1
g_comval:
	DEFS	32
g_reader_vars:
	DEFS	620
val_p:
	DEFS	2
ActiveDriveOK:
	DEFS	1
	RSEG	IDATA0
g_DiskStateFlag:
	DEFS	1
g_from_browser:
	DEFS	1
	RSEG	CDATA0
	DEFB	0
	DEFB	0
	END

⌨️ 快捷键说明

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