📄 hamaro_bcd.h
字号:
/* hamaro_bcd.h */
/*+++ *******************************************************************\
*
* Copyright and Disclaimer:
*
* ---------------------------------------------------------------
* ALL SOFTWARE, APPLICATIONS, DOCUMENTATION, OR MATERIALS
* FURNISHED HEREIN IS PROVIDED *AS IS*. CONEXANT DOES NOT MAKE
* ANY WARRANTIES, EITHER EXPRESS OR IMPLIED, AND HEREBY EXPRESSLY
* DISCLAIMS ANY AND ALL SUCH WARRANTIES TO THE EXTENT PERMITTED
* BY LAW, INCLUDING, SPECIFICALLY, ANY IMPLIED WARRANTY ARISING
* BY STATUTE OR OTHERWISE IN LAW OR FROM A COURSE OF DEALING OR
* USAGE OF TRADE. CONEXANT DOES NOT MAKE ANY WARRANTIES, EITHER
* EXPRESS OR IMPLIED, AND HEREBY EXPRESSLY DISCLAIMS ANY AND ALL
* SUCH WARRANTIES WITH RESPECT TO ALL SOFTWARE, APPLICATIONS,
* DOCUMENTATION, AND MATERIALS INCLUDING ALL IMPLIED WARRANTIES
* OF MERCHANTABILITY, OR OF MERCHANTABLE QUALITY, OR OF FITNESS
* FOR ANY PURPOSE, PARTICULAR, SPECIFIC OR OTHERWISE, OR OF
* NONINFRINGEMENT OF INTELLECTUAL PROPERTY RIGHTS OF OTHERS,
* RELATING TO THE SOFTWARE, APPLICATIONS, OPERATION,
* DOCUMENTATION, DATA OR RESULTS GENERATED BY THE OPERATION OR
* USE THEREOF, AND MATERIALS PROVIDED HEREIN. THE ENTIRE RISK AS
* TO THE SUBSTANCE, QUALITY AND PERFORMANCE OF SOFTWARE,
* APPLICATIONS, AND DOCUMENTATION DESCRIBING SUCH SOFTWARE
* REMAINS WITH THE BUYER.
*
* REGARDLESS OF WHETHER ANY REMEDY SET FORTH HEREIN FAILS OF ITS
* ESSENTIAL PURPOSE OR OTHERWISE, CONEXANT SHALL NOT BE LIABLE
* FOR ANY EXEMPLARY, SPECIAL, PUNITIVE, SPECULATIVE, INDIRECT,
* CONSEQUENTIAL OR INCIDENTAL DAMAGES OF ANY KIND (INCLUDING
* WITHOUT LIMITATION LOST PROFITS, LOSS OF INCOME, LOSS OF
* GOODWILL, OR OTHER TANGIBLE OR INTANGIBLE BUSINESS LOSS)
* ARISING OUT OF OR IN CONNECTION WITH, DIRECTLY OR INDIRECTLY,
* SOFTWARE, APPLICATIONS, DOCUMENTATION, OR ANY SERVICES OR
* MATERIALS PROVIDED HEREUNDER, OR USE OR INABILITY TO USE THE
* SOFTWARE, EVEN IF CONEXANT HAS BEEN ADVISED OF THE POSSIBILITY
* OF SUCH DAMAGES.
*
* Copyright (c) 2001 Conexant Systems, Inc.
* All Rights Reserved.
* ---------------------------------------------------------------
*
* Module Revision Id:
*
* $Header: hamaro_bcd.h, 1, 2005-12-27 1:09:28, Sunbey (VSS Migration)$
*
* Abstract:
*
* Contains BCD function prototypes.
*
\******************************************************************* ---*/
#ifndef HAMARO_BCD_H_DEFINED
#define HAMARO_BCD_H_DEFINED
#include "hamaro_defs.h"
/*******************************************************************************************************/
/* HAMARO_BCDNO */
/*******************************************************************************************************/
typedef struct HAMARO_BCDNO
{ /* binary-coded-decimal struct */
signed char sign[1]; /* size: '-' if negative value */
signed char digits[HAMARO_MAX_BCDNO+1]; /* storage for bcd number */
}HAMARO_BCDNO;
/*******************************************************************************************************/
/* BCD Prototypes */
/*******************************************************************************************************/
void HAMARO_BCD_set(HAMARO_BCDNO *bcdno, unsigned long newval);
void HAMARO_BCD_add(HAMARO_BCDNO *bcd, unsigned long add);
void HAMARO_BCD_add_bcd(HAMARO_BCDNO *bcd, HAMARO_BCDNO *bcdtoadd);
void HAMARO_BCD_mult(HAMARO_BCDNO *bcdtodiv, unsigned long multby);
void HAMARO_BCD_mult_bcd(HAMARO_BCDNO *bcd, HAMARO_BCDNO *bcdmultby);
void HAMARO_BCD_div_bcd(HAMARO_BCDNO *bcdtodiv, HAMARO_BCDNO *bcd);
void HAMARO_BCD_div(HAMARO_BCDNO *bcd, unsigned long divby);
unsigned long HAMARO_BCD_out(HAMARO_BCDNO *bcd);
BOOL HAMARO_BCD_zero(HAMARO_BCDNO *bcd);
void _HAMARO_BCD_adjust_improved(HAMARO_BCDNO *bcd,int ledge);
void HAMARO_BCD_move_bcd(HAMARO_BCDNO *bcd, HAMARO_BCDNO *bcdsource);
void _HAMARO_BCD_div_ten(HAMARO_BCDNO *bcd);
void _HAMARO_BCD_mult_ten(HAMARO_BCDNO *bcd);
void _HAMARO_BCD_mult_bcd_ones(HAMARO_BCDNO *bcd, char digit);
void _HAMARO_BCD_div_bcd_ones(HAMARO_BCDNO *bcd, char digit);
int HAMARO_BCD_compare(HAMARO_BCDNO *bcd, HAMARO_BCDNO *bcd2);
void HAMARO_BCD_subt_bcd(HAMARO_BCDNO *bcd, HAMARO_BCDNO *subt);
void HAMARO_BCD_subt(HAMARO_BCDNO *bcd, unsigned long subt);
HAMARO_BCDNO *HAMARO_BCD_abs(HAMARO_BCDNO *bcd);
BOOL HAMARO_BCD_highdigit(HAMARO_BCDNO *bcd, int idx);
void _HAMARO_BCD_neg(HAMARO_BCDNO *bcd, int idx);
BOOL HAMARO_BCD_leading_low(HAMARO_BCDNO *bcdno);
void HAMARO_BCD_test(void);
void HAMARO_BCD_print(HAMARO_BCDNO *bcd);
/*******************************************************************************************************/
/* BCD Macros (3-4-02 moved from cobra_defs.h file) */
/*******************************************************************************************************/
#define HAMARO_BCD_clear(a) (HAMARO_BCD_set((a),0L))
#define HAMARO_BCD_sign(a) (HAMARO_BCD_getsign(a))
#define HAMARO_BCD_getsign(a) ((signed int)((a)->sign[0] == '-' ? -1 : 1))
#define HAMARO_BCD_setsign(a,b) ((a)->sign[0] = (signed char)((b) < 0 ? '-' : '+'))
#define _HAMARO_BCD_lsd(a) ((a)->digits[HAMARO_MAX_BCDNO-1]) /* least-significant-digit */
#define HAMARO_BCD_incr(a) ((_HAMARO_BCD_lsd(a) = (signed char)(_HAMARO_BCD_lsd(a)+HAMARO_BCD_sign(a))),(_HAMARO_BCD_adjust(a)))
#define HAMARO_BCD_decr(a) ((_HAMARO_BCD_lsd(a) = (signed char)(_HAMARO_BCD_lsd(a)-HAMARO_BCD_sign(a))),(_HAMARO_BCD_adjust(a)))
#endif /* #ifndef HAMARO_BCD_H_DEFINED */
/* CR 9509 : Add an extra newline */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -