Moved the string that contains the ascii representation of LONG_MIN into its
own file. git-svn-id: svn://svn.cc65.org/cc65/trunk@5941 b7a2c559-68d2-44c3-8de9-860c34a00d81
This commit is contained in:
parent
c7d6712023
commit
6eefd591c1
3 changed files with 20 additions and 7 deletions
|
@ -42,6 +42,7 @@ CFLAGS = -Osir -g -T -t $(SYS) --forget-inc-paths -I . -I ../../include
|
|||
# From C source-files
|
||||
C_OBJS = _afailed.o \
|
||||
_hextab.o \
|
||||
_longminstr.o \
|
||||
_poserror.o \
|
||||
_scanf.o \
|
||||
abort.o \
|
||||
|
|
15
libsrc/common/_longminstr.c
Normal file
15
libsrc/common/_longminstr.c
Normal file
|
@ -0,0 +1,15 @@
|
|||
/*
|
||||
* Ullrich von Bassewitz, 2012-11-26
|
||||
*
|
||||
* Minimum value of a long. Is used in ascii conversions, since this value
|
||||
* has no positive counterpart than can be represented in 32 bits. In C,
|
||||
* since the compiler will convert to the correct character set for the
|
||||
* target platform.
|
||||
*/
|
||||
|
||||
|
||||
|
||||
const unsigned char _longminstr[] = "-2147483648";
|
||||
|
||||
|
||||
|
|
@ -7,20 +7,17 @@
|
|||
|
||||
.export _ltoa, _ultoa
|
||||
.import popax
|
||||
.import __hextab
|
||||
.import __hextab, __longminstr
|
||||
.importzp sreg, ptr1, ptr2, ptr3, tmp1
|
||||
|
||||
|
||||
|
||||
.rodata
|
||||
specval:
|
||||
.byte '-', '2', '1', '4', '7', '4', '8', '3', '6', '4', '8', 0
|
||||
.code
|
||||
|
||||
;
|
||||
; Common subroutine to pop the parameters and put them into core
|
||||
;
|
||||
|
||||
|
||||
dopop: sta tmp1 ; will loose high byte
|
||||
jsr popax ; get s
|
||||
sta ptr1
|
||||
|
@ -56,12 +53,12 @@ _ltoa: jsr dopop ; pop the arguments
|
|||
bne L2
|
||||
|
||||
ldy #11
|
||||
L1: lda specval,y ; copy -2147483648
|
||||
L1: lda __longminstr,y ; copy -2147483648
|
||||
sta (ptr1),y
|
||||
dey
|
||||
bpl L1
|
||||
jmp L10
|
||||
|
||||
|
||||
; Check if the value is negative. If so, write a - sign and negate the
|
||||
; number.
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue