summaryrefslogtreecommitdiff
path: root/frontends/calculator/CEdev/lib/static/sqrt.src
blob: 7a20210b7fc847f904b192dda6b19defce7da1bf (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
; Zilog eZ80 ANSI C Compiler Release 3.4
; -optsize -nomodsect -peephole -globalopt -localcse
; -const=ROM 
	FILE	"..\SQRT.C"
	.assume ADL=1
	SEGMENT CODE
;    1	/************************************************************************/
;    2	/*                                                                      */
;    3	/*                      Copyright (C)1987-2008 by                       */
;    4	/*                              Zilog, Inc.                             */
;    5	/*                                                                      */
;    6	/*                          San Jose, California                        */
;    7	/*                                                                      */
;    8	/************************************************************************/
;    9	
;   10	#include <errno.h>
;   11	#include <math.h>
;   12	
;   13	extern double sqrtf( double value );
;   14	
;   15	// sqrt - Standard C library routine
;   16	// sqrt returns the square root of its floating point argument.
;   17	//
;   18	// Arguments:
;   19	//   value     - the floating point argument
;   20	//
;   21	// Returns:
;   22	//   - the square root (or zero if the argument is negative)
;   23	//
;   24	
;   25	double sqrt( double value ) {
_sqrt:
	CALL	__frameset0
;   26		if ( value < 0.0 ) {
	LD	HL,(IX+6)
	LD	E,(IX+9)
	LD	BC,0
	XOR	A,A
	CALL	__fcmp
	JP	P,L_1
;   27			errno = EDOM;
	LD	BC,4
	LD	(_errno),BC
	OR	A,A
;   28			return 0.0;
	SBC	HL,HL
	LD	E,0
	JR	L_2
;   29		}
L_1:
;   30		return sqrtf( value );
	LD	C,(IX+9)
	LD	B,0
	PUSH	BC
	LD	BC,(IX+6)
	PUSH	BC
	CALL	_sqrtf
	POP	BC
	POP	BC
;   31	}
L_2:
	LD	SP,IX
	POP	IX
	RET	


;**************************** _sqrt ***************************
;Name                         Addr/Register   Size   Type
;_sqrtf                              IMPORT  -----   function
;_errno                              IMPORT      3   variable
;value                                 IX+6      4   parameter


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


	XREF _sqrtf:ROM
	XREF _errno:ROM
	XREF __fcmp:ROM
	XREF __frameset0:ROM
	XDEF _sqrt
	END