view src/math.inc @ 634:4050675965ea

3.10 stable release
author heinrichsweikamp
date Tue, 28 Apr 2020 17:34:31 +0200
parents 185ba2f91f59
children 7d8a4c60ec1a
line wrap: on
line source

;=============================================================================
;
;   File math.inc                           * combined next generation V3.09.4k
;
;
;   Copyright (c) 2011, JD Gascuel, HeinrichsWeikamp, all right reserved.
;=============================================================================
; HISTORY
;  2011-08-03 : [mH] moving from OSTC code


;-----------------------------------------------------------------------------
; SHIFT-RIGHT    with UNSIGNED values
;
	extern	div16					; divA:2 = divA:2 / 2^WREG
									; trashes WREG


;-----------------------------------------------------------------------------
; SHIFT-LEFT     with UNSIGNED values
;
	extern	mult16					; divA:2 = divA:2 * 2^WREG
									; trashes WREG


;-----------------------------------------------------------------------------
; ADDITION       with UNSIGNED values
;
	extern	addU16					; sub_c:2 = sub_a:2 + sub_b:2
									; trashes WREG


;-----------------------------------------------------------------------------
; SUBTRACTION    with SIGNED   values
;
	extern	sub16					; sub_c:2 = sub_a:2 - sub_b:2
									; sets neg_flag if result is < 0
									; trashes WREG


;-----------------------------------------------------------------------------
; SUBTRACTION    with UNSIGNED values
;
	extern	subU16					; sub_c:2 = sub_a:2 - sub_b:2
									; sets neg_flag if result is < 0
									; trashes WREG


;-----------------------------------------------------------------------------
; COMPARE        with UNSIGNED values
;
	extern	cmpU16					; trashed = sub_a:2 - sub_b:2
									; sets neg_flag if result is < 0, but does not store result itself
									; trashes WREG


;-----------------------------------------------------------------------------
; MULTIPLICATION with UNSIGNED values
;
	extern	mult16x16				; xC:4 = xA:2 * xB:2
									; trashes PRODL, PRODH, WREG


;-----------------------------------------------------------------------------
; DIVISION       with UNSIGNED values
;
	extern	div16x16				; xC:2 = xA:2 / xB:2 with xA as remainder
									; trashes xB, WREG


;-----------------------------------------------------------------------------
; DIVISION       with UNSIGNED values
;
	extern	div32x16				; xC:4 = xC:4 / xB:2 with xA as remainder	
									; trashes WREG


;-----------------------------------------------------------------------------
; Math Functions specific for Use by ISR
;-----------------------------------------------------------------------------

;-----------------------------------------------------------------------------
; 24 bit shift, repeated WREG times, dedicated to a specific usage
;
	extern	isr_shift_C31


;-----------------------------------------------------------------------------
; MULTIPLICATION with UNSIGNED values
;
	extern	isr_unsigned_mult16x16	; isr_xC = isr_xA * isr_xB
									; trashes PRODL, PRODH, WREG


;-----------------------------------------------------------------------------
; MULTIPLICATION with SIGNED   values
;
	extern	isr_signed_mult16x16	; isr_xC = isr_xA * isr_xB
									; trashes PRODL, PRODH, WREG

;-----------------------------------------------------------------------------