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

📄 dataper_api.s

📁 zilog的实时操作系统RZK,可以移植到多种处理器上
💻 S
字号:
; ZiLOG eZ80 ANSI C Compiler Release 2.3
; -alias -bitfieldsize=24 -charsize=8 -const=ROM -debug
; -doublesize=32 -floatsize=32 -intsize=24 -intsrc -nolocalcse
; -longsize=32 -optsize -modsect -peephole -nosdiopt
; -nofastcall -noregvar -nostkck -nooptlink -swap 
	DEFINE per_api_TEXT,SPACE=ROM
	FILE	"..\RZK\CORE\EZ80\SRC\ZUTILS\DATAPER_API.C"
	.assume ADL=1
.DEBUG "C"
	SEGMENT per_api_TEXT
.BEGREC "fmt_type",13
.DEFINE "status"
.VALUE 0
.CLASS 8
.TYPE 12
.ENDEF
.DEFINE "flags"
.VALUE 1
.CLASS 8
.TYPE 12
.ENDEF
.DEFINE "size"
.VALUE 2
.CLASS 8
.TYPE 2
.ENDEF
.DEFINE "chr"
.VALUE 3
.CLASS 8
.TYPE 2
.ENDEF
.DEFINE "type"
.VALUE 4
.CLASS 8
.TYPE 2
.ENDEF
.DEFINE "field_width"
.VALUE 5
.CLASS 8
.TYPE 2
.ENDEF
.DEFINE "precision"
.VALUE 6
.CLASS 8
.TYPE 2
.ENDEF
.DEFINE "set_begin"
.VALUE 7
.CLASS 8
.TYPE 34
.ENDEF
.DEFINE "set_end"
.VALUE 10
.CLASS 8
.TYPE 34
.ENDEF
.ENDREC "fmt_type"
.BEGREC "flt_info",14
.DEFINE "flags"
.VALUE 0
.CLASS 8
.TYPE 12
.ENDEF
.DEFINE "exp"
.VALUE 1
.CLASS 8
.TYPE 2
.ENDEF
.DEFINE "digits"
.VALUE 2
.CLASS 8
.DIM 12
.TYPE 108
.ENDEF
.ENDREC "flt_info"
.BEGREC "NONAME0",6
.DEFINE "quot"
.VALUE 0
.CLASS 8
.TYPE 4
.ENDEF
.DEFINE "rem"
.VALUE 3
.CLASS 8
.TYPE 4
.ENDEF
.ENDREC "NONAME0"
.BEGREC "NONAME1",8
.DEFINE "quot"
.VALUE 0
.CLASS 8
.TYPE 5
.ENDEF
.DEFINE "rem"
.VALUE 4
.CLASS 8
.TYPE 5
.ENDEF
.ENDREC "NONAME1"
.BEGREC "header",6
.DEFINE "s"
.VALUE 0
.CLASS 11
.TAG "NONAME2"
.TYPE 8
.ENDEF
.DEFINE "x"
.VALUE 0
.CLASS 11
.TYPE 2
.ENDEF
.ENDREC "header"
.BEGREC "NONAME2",6
.DEFINE "ptr"
.VALUE 0
.CLASS 8
.TAG "header"
.TYPE 40
.ENDEF
.DEFINE "size"
.VALUE 3
.CLASS 8
.TYPE 14
.ENDEF
.ENDREC "NONAME2"
.BEGREC "NONAME3",147
.DEFINE "c_EmacAddr"
.VALUE 0
.CLASS 8
.DIM 6
.TYPE 108
.ENDEF
.DEFINE "c_IsDhcpEnabled"
.VALUE 6
.CLASS 8
.TYPE 12
.ENDEF
.DEFINE "ul_IPAddr"
.VALUE 7
.CLASS 8
.TYPE 15
.ENDEF
.DEFINE "ul_NetMask"
.VALUE 11
.CLASS 8
.TYPE 15
.ENDEF
.DEFINE "ul_GateWay"
.VALUE 15
.CLASS 8
.TYPE 15
.ENDEF
.DEFINE "c_userdata"
.VALUE 19
.CLASS 8
.DIM 128
.TYPE 108
.ENDEF
.ENDREC "NONAME3"
.BEGREC "NONAME4",22
.DEFINE "p_start_addr"
.VALUE 0
.CLASS 8
.TYPE 33
.ENDEF
.DEFINE "ul_size"
.VALUE 3
.CLASS 8
.TYPE 15
.ENDEF
.DEFINE "pfn_dev_init"
.VALUE 7
.CLASS 8
.TYPE 548
.ENDEF
.DEFINE "pfn_dev_read"
.VALUE 10
.CLASS 8
.TYPE 549
.ENDEF
.DEFINE "pfn_dev_write"
.VALUE 13
.CLASS 8
.TYPE 549
.ENDEF
.DEFINE "pfn_dev_erase"
.VALUE 16
.CLASS 8
.TYPE 548
.ENDEF
.DEFINE "pfn_dev_close"
.VALUE 19
.CLASS 8
.TYPE 548
.ENDEF
.ENDREC "NONAME4"
;    1	/*
;    2	 * File       : DataPer_API.c
;    3	 * Description: This file contains the data persistence APIs
;    4	 *				data persistance of different values.
;    5	 * Author     : Mahadev K C
;    6	 * Created on : 3-FEB-2005
;    7	 *
;    8	 * Copyright 2004-2005 ZiLOG Inc.  ALL RIGHTS RESERVED.
;    9	 *
;   10	 * This file contains unpublished confidential and proprietary information
;   11	 * of ZiLOG, Inc.
;   12	 * NO PART OF THIS WORK MAY BE DUPLICATED, STORED, PUBLISHED OR DISCLOSED 
;   13	 * IN ANY FORM WITHOUT THE PRIOR WRITTEN CONSENT OF ZiLOG, INC.
;   14	 * This is not a license and no use of any kind of this work is authorized
;   15	 * in the absence of a written license granted by ZiLOG, Inc. in ZiLOG's 
;   16	 * sole discretion 
;   17	 */
;   18	
;   19	
;   20	/*
;   21	 * standard header files
;   22	 */
;   23	#include <stdio.h>
;   24	#include <ctype.h>
;   25	#include <string.h>
;   26	#include <stdlib.h>
;   27	//#include <defines.h>
;   28	
;   29	/*
;   30	 * system header files
;   31	 */
;   32	#include "DataPerStruct.h"
;   33	
;   34	
;   35	/*
;   36	 * API prototypes:
;   37	 */
;   38	/*
;   39	 * Function name: GetDataPersistence
;   40	 * Description:   This function reads the flash block area for Data
;   41	 *                persistence values
;   42	 * Inputs:        pDataPer - Data persistence structure
;   43	 * Outputs:       None
;   44	 * Return values: 0 - Success, non-zero error
;   45	 * Additional information: 
;   46	 */
;   47	
;   48	INT8 GetDataPersistence( PDATA_PER_t p_data_per )
;   49	#ifdef _IAR_CODE
;   50	@ "DATA_PER_RAM"
;   51	#endif
;   52	{
_GetDataPersistence:
.DEFINE "_GetDataPersistence"

.VALUE _GetDataPersistence

.CLASS 2

.TYPE 66

.ENDEF

.BEGFUNC "GetDataPersistence",52,"_GetDataPersistence"

.LINE 52

.DEFINE "p_data_per"

.CLASS 65

.VALUE 6

.TAG "NONAME3"

.TYPE 40

.ENDEF

.DEFINE "intr_mask"

.CLASS 65

.VALUE -3

.TYPE 14

.ENDEF

	PUSH	IX
	LD	IX,0
	ADD	IX,SP
	PUSH	BC
;   53		UINTRMASK intr_mask ;
;   54	
;   55		if( NULL == p_data_per )
.LINE 55

	LD	BC,0
	LD	HL,(IX+6)
	OR	A,A
	SBC	HL,BC
	JR	NZ,L_1
;   56			return -1 ;
.LINE 56

	LD	A,-1
	JR	L_2
L_1:
;   57	
;   58		/*
;   59		 * disable the interrupts as we do not want any code to be executed 
;   60		 * from flash other than this function
;   61		 */
;   62		intr_mask = Per_DI() ;
.LINE 62

	CALL	_Per_DI
	LD	(IX+-3),HL
;   63	
;   64		/*
;   65		 * Now initialize the flash block configured in the structure.
;   66		 */
;   67		g_data_per_cfg.pfn_dev_init( g_data_per_cfg.p_start_addr, g_data_per_cfg.ul_size ) ;
	LD	A,(_g_data_per_cfg+6)
	LD	C,A
	LD	B,0
	PUSH	BC
	LD	BC,(_g_data_per_cfg+3)
	PUSH	BC
	LD	BC,(_g_data_per_cfg)
	PUSH	BC
.LINE 67

	LD	IY,(_g_data_per_cfg+7)
	CALL	__indcall
	POP	BC
	POP	BC
	POP	BC
;   68	
;   69		/*
;   70		 * Now read the data from the flash block configured
;   71		 */
;   72		g_data_per_cfg.pfn_dev_read( g_data_per_cfg.p_start_addr, p_data_per, sizeof( DATA_PER_t ) ) ;
	LD	BC,147
	PUSH	BC
	LD	BC,(IX+6)
	PUSH	BC
	LD	BC,(_g_data_per_cfg)
	PUSH	BC
.LINE 72

	LD	IY,(_g_data_per_cfg+10)
	CALL	__indcall
	POP	BC
	POP	BC
	POP	BC
;   73	
;   74		g_data_per_cfg.pfn_dev_close() ;
.LINE 74

	LD	IY,(_g_data_per_cfg+19)
	CALL	__indcall
;   75	
;   76		/*
;   77		 * enable the interrupts
;   78		 */
;   79	
;   80		Per_EI( intr_mask ) ;
	LD	BC,(IX+-3)
	PUSH	BC
.LINE 80

	CALL	_Per_EI
	POP	BC
;   81		return 0 ;
.LINE 81

	XOR	A,A
;   82	}
L_2:
.LINE 82

	LD	SP,IX
	POP	IX
	RET	


;**************************** _GetDataPersistence ***************************
;Name                         Addr/Register   Size   Type
;_Per_EI                             IMPORT  -----   function
;_g_data_per_cfg                     IMPORT     22   variable
;_Per_DI                             IMPORT  -----   function
;intr_mask                             IX-3      3   variable
;p_data_per                            IX+6      3   parameter


; Stack Frame Size: 12 (bytes)
;       Spill Code: 0 (instruction)


.ENDFUNC "GetDataPersistence",82,"_GetDataPersistence"
;   83	
;   84	
;   85	/*
;   86	 * Function name: SetDataPersistence
;   87	 * Description:   This function erases the appropriate flash block and
;   88	 *                writes the data structure onto the flash
;   89	 * Inputs:        pDataPer - Data persistence structure
;   90	 * Outputs:       None
;   91	 * Return values: 0 - Success, non-zero error
;   92	 * Additional information: 
;   93	 */
;   94	INT8 SetDataPersistence( PDATA_PER_t p_data_per )
;   95	#ifdef _IAR_CODE
;   96	@ "DATA_PER_RAM"
;   97	#endif
;   98	{
_SetDataPersistence:
.DEFINE "_SetDataPersistence"

.VALUE _SetDataPersistence

.CLASS 2

.TYPE 66

.ENDEF

.BEGFUNC "SetDataPersistence",98,"_SetDataPersistence"

.LINE 98

.DEFINE "p_data_per"

.CLASS 65

.VALUE 6

.TAG "NONAME3"

.TYPE 40

.ENDEF

.DEFINE "intr_mask"

.CLASS 65

.VALUE -3

.TYPE 14

.ENDEF

	PUSH	IX
	LD	IX,0
	ADD	IX,SP
	PUSH	BC
;   99		UINTRMASK intr_mask ;
;  100	
;  101		if( NULL == p_data_per )
.LINE 101

	LD	BC,0
	LD	HL,(IX+6)
	OR	A,A
	SBC	HL,BC
	JR	NZ,L_4
;  102			return -1 ;
.LINE 102

	LD	A,-1
	JR	L_5
L_4:
;  103	
;  104		/*
;  105		 * disable the interrupts as we do not want any code to be executed 
;  106		 * from flash other than this function
;  107		 */
;  108		intr_mask = Per_DI() ;
.LINE 108

	CALL	_Per_DI
	LD	(IX+-3),HL
;  109	
;  110		/*
;  111		 * Now erase the flash block configured in the structure.
;  112		 */
;  113		g_data_per_cfg.pfn_dev_init( g_data_per_cfg.p_start_addr, g_data_per_cfg.ul_size ) ;
	LD	A,(_g_data_per_cfg+6)
	LD	C,A
	LD	B,0
	PUSH	BC
	LD	BC,(_g_data_per_cfg+3)
	PUSH	BC
	LD	BC,(_g_data_per_cfg)
	PUSH	BC
.LINE 113

	LD	IY,(_g_data_per_cfg+7)
	CALL	__indcall
	POP	BC
	POP	BC
	POP	BC
;  114		g_data_per_cfg.pfn_dev_erase( g_data_per_cfg.p_start_addr, g_data_per_cfg.ul_size ) ;
	LD	A,(_g_data_per_cfg+6)
	LD	C,A
	LD	B,0
	PUSH	BC
	LD	BC,(_g_data_per_cfg+3)
	PUSH	BC
	LD	BC,(_g_data_per_cfg)
	PUSH	BC
.LINE 114

	LD	IY,(_g_data_per_cfg+16)
	CALL	__indcall
	POP	BC
	POP	BC
	POP	BC
;  115	
;  116		/*
;  117		 * Now write the data into the flash block configured
;  118		 */
;  119		g_data_per_cfg.pfn_dev_write( g_data_per_cfg.p_start_addr, p_data_per, sizeof( DATA_PER_t ) ) ;
	LD	BC,147
	PUSH	BC
	LD	BC,(IX+6)
	PUSH	BC
	LD	BC,(_g_data_per_cfg)
	PUSH	BC
.LINE 119

	LD	IY,(_g_data_per_cfg+13)
	CALL	__indcall
	POP	BC
	POP	BC
	POP	BC
;  120	
;  121		g_data_per_cfg.pfn_dev_close() ;
.LINE 121

	LD	IY,(_g_data_per_cfg+19)
	CALL	__indcall
;  122	
;  123		/*
;  124		 * enable the interrupts
;  125		 */
;  126	
;  127		Per_EI( intr_mask ) ;
	LD	BC,(IX+-3)
	PUSH	BC
.LINE 127

	CALL	_Per_EI
	POP	BC
;  128	
;  129		return 0 ;
.LINE 129

	XOR	A,A
;  130	}
L_5:
.LINE 130

	LD	SP,IX
	POP	IX
	RET	


;**************************** _SetDataPersistence ***************************
;Name                         Addr/Register   Size   Type
;_Per_EI                             IMPORT  -----   function
;_g_data_per_cfg                     IMPORT     22   variable
;_Per_DI                             IMPORT  -----   function
;intr_mask                             IX-3      3   variable
;p_data_per                            IX+6      3   parameter


; Stack Frame Size: 12 (bytes)
;       Spill Code: 0 (instruction)


.ENDFUNC "SetDataPersistence",130,"_SetDataPersistence"
	XREF _Per_EI:ROM
	XREF _Per_DI:ROM
	XREF _g_data_per_cfg:ROM
	XREF __indcall:ROM
	XDEF _SetDataPersistence
	XDEF _GetDataPersistence
	END

⌨️ 快捷键说明

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