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

📄 gps_a_c.lib

📁 使用CYAN单片机的ECOG1开发板连接SIM300C的GSM模块开发的短信收发程序.供UART和AT指令编程者参考
💻 LIB
📖 第 1 页 / 共 5 页
字号:
; =============================================================================
;
; CREATED by eCOG Compiler/Linker - V1.6 (build 5179)
; DATE Wed Jul 18 14:08:45 2007
;
; COMMAND LINE : ecogcl -g -pack D:/GPS/software/GPS_A_C/cstartup -map
; D:/GPS/software/GPS_A_C/internal -DNDEBUG
; "-IC:/Program Files/Cyan Technology/CyanIDE/libraries/eCOG1k" -o
; D:/GPS/software/GPS_A_C/out/GPS_A_C -cmdfile
; D:/GPS/software/GPS_A_C/temp/files.tmp
;
; LBRARY FILES INCLUDED:
; C:/Program Files/Cyan Technology/CyanIDE/C/library\_printf.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__umh.asm
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__dfix.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__dls.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__dw.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__mwk.asm
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__dflt.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__dsub.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__dneg.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__dmul.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__mh.asm
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__mhI.asm
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__dadd.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\sqrt.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__ffltu.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__f2d.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__ddiv.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__dfltu.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__urh.asm
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__udh.asm
; C:/Program Files/Cyan Technology/CyanIDE/C/library\atan.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\cos.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\sin.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__umwk.asm
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__udw.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__nofpdi.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__vfprin.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__cond_disable_interrupts.asm
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__cond_enable_interrupts.asm
; C:/Program Files/Cyan Technology/CyanIDE/C/library\errno.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__dgr.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__dwc.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__fltdif.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__fltsum.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__huge_v.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__dleq.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__d2f.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\fabs.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__sincos.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__udwc.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\strlen.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\isdigit.c
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__disable_interrupts.asm
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__enable_interrupts.asm
; C:/Program Files/Cyan Technology/CyanIDE/C/library\__dgeq.c
;
; =============================================================================



; generated by Norcroft eCOG C Compiler V1.10 $BuildRevision$
; special options:  -g
;
	MODULE qqtemp____printf
	.CODE
	.LARGE
	; TARGET_MAX_STACK_OVERRUN = 8
;/*=============================================================================
;Cyan Technology Ltd
;eCOG C Library
;
;FILE _printf.c - non floating point printf
; 
;DESCRIPTION
;The _printf function formats and outputs values and characters to the standard
;output under the control of the fmt string. It is identical to the standard
;printf function except that it does not support floating point output (%e,%E,
;%f,%g,%G) and therefore does not require any floating point library functions.
;
;The compiler automatically selects _printf in place of printf when the format
;string is a constant and there are no floating point conversion specifications.
;This avoids floating point functions being included in programs that do not
;require them.
;    
;MODIFICATION DETAILS
;01/NOV/2001     Karl Swepson      Taken from CCLs XAP2 Library.
;26/OCT/2004     Andy Cromarty     Improved legibility, removed all while(1) loops
;                                  and added assert statements for debugging
;=============================================================================*/
;
;/* Copyright (C) Codemist Ltd, 1988 */
;/* Copyright (C) Cambridge Consultants Ltd, 1995 */
;/* Copyright (C) Cyan Technology Ltd, 2001, 2004 */
;
;#include "__lib.h"
;#include "stdio.h"
;#include "stdarg.h"
;
;int _printf(const char *fmt, ...)
;
$_printf:
^qqtemp____printf.'C:\Program Files\Cyan Technology\CyanIDE\C\library\_printf.c'.?32.1:
	st	AL,@(-1,Y)
	st	AH,@(-2,Y)
	st	XH,@(-4,Y)
	st	X,@(-3,Y)
	st	AL,@H'ffe1	; %r0
	st	AH,@H'ffe0	; %r0
Lstab?0c:
;{
^qqtemp____printf.'C:\Program Files\Cyan Technology\CyanIDE\C\library\_printf.c'.?33.1:
Lstab?1c:
;    __IODESC io_op;
;    va_list a;
;    int n;
;    
;    va_start(a, fmt);
^qqtemp____printf.'C:\Program Files\Cyan Technology\CyanIDE\C\library\_printf.c'.?38.1:
; ^qqtemp____printf.'C:\Program Files\Cyan Technology\CyanIDE\C\library\_printf.c'.?38.1:
; ^qqtemp____printf.'C:\Program Files\Cyan Technology\CyanIDE\C\library\_printf.c'.?38.1:
	add	Y,#-11
Lstab?2a:
	mov	AL,Y
	add	AL,#9
	add	AL,#2
;    
;    io_op.is_string = 0;
	st	AL,@(4,Y)	; %r16 (a)
^qqtemp____printf.'C:\Program Files\Cyan Technology\CyanIDE\C\library\_printf.c'.?40.1:
	ld	AL,#0
	st	AL,@(0,Y)	; io_op
;    io_op.d.output_fn = (&putchar);
^qqtemp____printf.'C:\Program Files\Cyan Technology\CyanIDE\C\library\_printf.c'.?41.1:
	ld	AL,#lwrd($putchar)
	ld	AH,#hwrd($putchar)
	st	AL,@(2,Y)	; io_op+2
	st	AH,@(1,Y)	; io_op+1
;    
;    n = __vfprin( &io_op, fmt, a, __nofpdi);
^qqtemp____printf.'C:\Program Files\Cyan Technology\CyanIDE\C\library\_printf.c'.?43.1:
	ld	AL,#lwrd($__nofpdi)
	ld	AH,#hwrd($__nofpdi)
	st	AL,@(-1,Y)
	st	AH,@(-2,Y)
	ld	AL,@(4,Y)	; %r16 (a)
	st	AL,@(-3,Y)
	ld	AL,@(10,Y)	; fmt+1
	ld	AH,@(9,Y)	; fmt
	st	AL,@(-4,Y)
	st	AH,@(-5,Y)
	st	Y,@H'ffe1	; %r0
	ld	AH,@(-5,Y)
	ld	AL,@H'ffe1	; %r0
	add	Y,#-4
Lstab?3a:
	bsr	$__vfprin
;    
;    va_end(a);
	st	AL,@(10,Y)	; %r17 (n)
^qqtemp____printf.'C:\Program Files\Cyan Technology\CyanIDE\C\library\_printf.c'.?45.1:
	ld	AL,#-256
;    
;    return (n);
	st	AL,@(8,Y)	; %r16 (a)
^qqtemp____printf.'C:\Program Files\Cyan Technology\CyanIDE\C\library\_printf.c'.?47.1:
	ld	AL,@(10,Y)	; %r17 (n)
	add	Y,#15
	ld	XH,@(-4,Y)
	bra	@(-3,Y)
Lstab?4c:
;
^qqtemp____printf.'C:\Program Files\Cyan Technology\CyanIDE\C\library\_printf.c'.?999999.1:
;}
;
;/* arch-tag: 3cae23ce-1328-40b9-88e0-e514d41c6691
;   (do not change this comment) */
;
	; .import	$putchar
	; .import	$__nofpdi
	; .import	$__vfprin
;
	; .export	$_printf
;
;
	.stabs	"C:\\Program Files\\Cyan Technology\\CyanIDE\\C\\library\\_printf.c",100,0,0,0
	.stabs	"int:t1=r1;-32768;32767;",128,0,0,0
	.stabs	"char:t2=r2;0;127;",128,0,0,0
	.stabs	"long int:t3=r1;-2147483648;2147483647;",128,0,0,0
	.stabs	"unsigned int:t4=r1;0;65535;",128,0,0,0
	.stabs	"unsigned long int:t5=r1;0;-1;",128,0,0,0
	.stabs	"short int:t6=r1;-32768;32767;",128,0,0,0
	.stabs	"unsigned short int:t7=r1;0;65535;",128,0,0,0
	.stabs	"signed char:t8=r1;-128;127;",128,0,0,0
	.stabs	"unsigned char:t9=r1;0;255;",128,0,0,0
	.stabs	"float:t10=r1;4;0;",128,0,0,0
	.stabs	"double:t11=r1;8;0;",128,0,0,0
	.stabs	"long double:t12=r1;8;0;",128,0,0,0
	.stabs	"void:t13=13",128,0,0,0
	.stabs	"C:\\Program Files\\Cyan Technology\\CyanIDE\\C\\include\\__lib.h",132,0,0,-1
	.stabs	"_va_list:t14=*1",128,0,0,0
	.stabs	"fp_number:t17=15=u8i:16=s8sxmhi:5,0,32;mlo:5,32,32;;,0,64;d:11,0,64;;",128,0,0,0
	.stabs	"dblrep:T18=u8d:11,0,64;ua:19=ar1;0;1;5,0,64;;",128,0,0,0
	.stabs	"dblrep:t20=18",128,0,0,0
	.stabs	"__remain:G5",32,0,0,0
	.stabs	"__rndnxt:G5",32,0,0,0
	.stabs	"BlockStruct:T21=s6flag:22,0,16;size:1,16,16;cdr:23=*21,32,16;;",128,0,0,0
	.stabs	" :T22=eBLKFREE:4660,BLKACTIVE:22136,;",128,0,0,0
	.stabs	"BlockStruct:t24=21",128,0,0,0
	.stabs	"__huge_v:G11",32,0,0,0
	.stabs	"__huge_f:G10",32,0,0,0
	.stabs	"__IODESC:t32=25=s6is_string:1,0,16;d:26=u4string:27=*2,0,32;output_fn:28=*29=f1,0,32;input_fn:30=*31=f1,0,32;;,16,32;;",128,0,0,0
	.stabs	"fp_print_t:t33=f1",128,0,0,0
	.stabs	"__ungot:G1",32,0,0,0
	.stabs	"fp_scan_t:t34=f3",128,0,0,0
	.stabs	"C:\\Program Files\\Cyan Technology\\CyanIDE\\C\\include\\stdio.h",132,0,0,-1
	.stabs	"size_t:t35=4",128,0,0,0
	.stabs	"__va_list:t36=*1",128,0,0,0
	.stabs	"C:\\Program Files\\Cyan Technology\\CyanIDE\\C\\include\\stdarg.h",132,0,0,-1
	.stabs	"va_list:t37=*1",128,0,0,0
	.stabs	"C:\\Program Files\\Cyan Technology\\CyanIDE\\C\\library\\_printf.c",132,0,0,-1
	.stabs	"_printf:F1",36,0,33,$_printf
	.stabs	"fmt:p38=*2",160,0,0,-4
	.stabs	"!LR:3",128,0,0,-8
	.stabs	"!SP:p1",160,0,0,0
	.stabn	192,0,0,Lstab?0c
	.stabn	224,0,0,Lstab?1c
	.stabs	"io_op:25",128,0,0,-22
	.stabs	"a:14",128,0,0,-14
	.stabs	"n:1",128,0,0,-10
	.stabs	"fmt:p38=*2",160,0,0,-4
	.stabs	"!LR:3",128,0,0,-8
	.stabs	"!SP:p1",160,0,0,0
	.stabn	192,0,0,Lstab?1c
	.stabn	224,0,0,Lstab?2a
	.stabs	"io_op:25",128,0,0,0
	.stabs	"a:14",128,0,0,8
	.stabs	"n:1",128,0,0,12
	.stabs	"fmt:p38=*2",160,0,0,18
	.stabs	"!LR:3",128,0,0,14
	.stabs	"!SP:p1",160,0,0,22
	.stabn	192,0,0,Lstab?2a
	.stabn	224,0,0,Lstab?3a
	.stabs	"io_op:25",128,0,0,8
	.stabs	"a:14",128,0,0,16
	.stabs	"n:1",128,0,0,20
	.stabs	"fmt:p38=*2",160,0,0,26
	.stabs	"!LR:3",128,0,0,22
	.stabs	"!SP:p1",160,0,0,30
	.stabn	192,0,0,Lstab?3a
	.stabn	224,0,0,Lstab?4c
;
	ENDMOD



	MODULE __umh

	.CODE
	.ALL

$__umh:
	;; save return address
	st	XH,@(-1,Y)
	st	X,@(-2,Y)

	;; save arguments
	st	AL,@(-3,Y)
	st	AH,@(-4,Y)
	
	;; conditionally disable interrupts
	sub	Y,#4		; NOTE: Stack pointer adjusted
	bsr	$__cond_disable_interrupts
	st	AL,@(-1,Y)

	;; ensure emi is not active before starting the multiplication
	;; this works around a bug in ecog1k
L1:	ld	AH,@H'ff7a	; emi.ctrl_sts
	and     AH,#H'12
	bne     L1

	;; multiply
	ld	AL,@(1,Y)
	umult	@(0,Y)

	;; save result
	st	AL,@(1,Y)
	st	AH,@(0,Y)

	;; conditionally enable interrupts
	ld	AL,@(-1,Y)	; NOTE: Don't adjust stack pointer
	bsr	$__cond_enable_interrupts
	add	Y,#4		; NOTE: Stack pointer adjusted

	;; load result
	ld	AL,@(-3,Y)
	ld	AH,@(-4,Y)

	;; return
	ld	XH,@(-1,Y)
	bra	@(-2,Y)

		
	ENDMOD




; generated by Norcroft eCOG C Compiler V1.10 $BuildRevision$
; special options:  -g
;
	MODULE qqtemp_____dfix
	.CODE
	.LARGE
	; TARGET_MAX_STACK_OVERRUN = 8
;/*=============================================================================
;Cyan Technology Ltd
;eCOG C Library
;
;FILE __dfix.c - software implementation of fp cast double->long
;
;DESCRIPTION
;This converts double representations of numbers to longint. If the number
;overflows then it sets errno to ERANGE and returns LONG_MAX;
;
;MODIFICATION DETAILS
;01/NOV/2001     Karl Swepson      Taken from CCLs XAP2 Library.
;26/OCT/2004     Andy Cromarty     Improved legibility, removed all while(1) loops
;                                  and added assert statements for debugging
;=============================================================================*/
;
;/* Copyright (C) Codemist Ltd, 1988 */
;/* Copyright (C) Cambridge Consultants Ltd, 1995 */
;/* Copyright (C) Cyan Technology Ltd, 2001, 2004 */
;
;#define __dfixX
;#include "__lib.h"
;#include "errno.h"
;#include "limits.h"
;
;int32 __dfix(unsigned32 ah, unsigned32 al)
;
$__dfix:
^qqtemp_____dfix.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dfix.c'.?26.1:
	st	AL,@(-1,Y)
	st	AH,@(-2,Y)
	st	XH,@(-4,Y)
	st	X,@(-3,Y)
	st	AL,@H'ffe5	; %r2 (ah)
	st	AH,@H'ffe4	; %r2 (ah)
Lstab?0c:
;{
^qqtemp_____dfix.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dfix.c'.?27.1:
Lstab?1c:
;    int sign, ax;
;    
;    sign = (ah & 0x80000000) ? 1 : 0;
^qqtemp_____dfix.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dfix.c'.?30.1:
	add	Y,#-4
Lstab?2a:
	ld	AL,@H'ffe5	; %r2 (ah)
	ld	AH,@H'ffe4	; %r2 (ah)
	ld	AL,#0
	and	AH,#-32768
	beq	?L5F1
; ^qqtemp_____dfix.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dfix.c'.?30.1:
	ld	AL,#1
	bra	?L4F1
?L5F1:
; ^qqtemp_____dfix.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dfix.c'.?30.1:
	ld	AL,#0
?L4F1:
;    
;    ax = (int)(ah >> 20) & 0x7ff;
	st	AL,@H'ffe9	; %r4 (sign)
^qqtemp_____dfix.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dfix.c'.?32.1:
	ld	AH,#0
	ld	AL,@H'ffe4	; %r2 (ah)
	asr	#4
	and	AL,#2047
;    ah = (ah & 0x000fffff) | 0x00100000;
	st	AL,@H'ffe7	; %r3 (ax)
^qqtemp_____dfix.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dfix.c'.?33.1:
	ld	AL,@H'ffe5	; %r2 (ah)
	ld	AH,@H'ffe4	; %r2 (ah)
	and	AH,#15
	or	AH,#16
;
;    /* @@@ beware: should next line be 0x3fe as in mip/ieeeflt.c?        */
;    if (ax < 0x3ff)                     /* arg < 1.0 ... result 0        */
	st	AL,@H'ffe5	; %r2 (ah)
	st	AH,@H'ffe4	; %r2 (ah)
^qqtemp_____dfix.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dfix.c'.?36.1:
	ld	AH,@H'ffe7	; %r3 (ax)
	cmp	AH,#1023
	blt	?L44F1
	bra	?L7F1
?L44F1:
;    {
^qqtemp_____dfix.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dfix.c'.?37.1:
;        al = 0;
^qqtemp_____dfix.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dfix.c'.?38.1:
	ld	AH,#0
	ld	AL,#0
	st	AL,@(5,Y)	; %r35 (al)
	st	AH,@(4,Y)	; %r35 (al)
	bra	?L36F1
?L7F1:
;    }
;    else if (ax > (0x400 + 51))         /* overflow */
^qqtemp_____dfix.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dfix.c'.?40.1:
	ld	AH,@H'ffe7	; %r3 (ax)
	cmp	AH,#1076
	blt	?L12F1
;    {
^qqtemp_____dfix.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dfix.c'.?41.1:
;        errno = ERANGE;
^qqtemp_____dfix.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dfix.c'.?42.1:
	ld	AL,#34
	st	AL,@$errno
;        al = LONG_MAX;
^qqtemp_____dfix.'C:\Program Files\Cyan Technology\CyanIDE\C\library\__dfix.c'.?43.1:
	ld	AH,#32767
	ld	AL,#-1
	st	AL,@(5,Y)	; %r35 (al)
	st	AH,@(4,Y)	; %r35 (al)
	bra	?L36F1
?L12F1:
;    }

⌨️ 快捷键说明

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