?? dataper_api.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 + -