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:
uz 2012-11-26 16:28:46 +00:00
parent c7d6712023
commit 6eefd591c1
3 changed files with 20 additions and 7 deletions

View file

@ -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 \

View 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";

View file

@ -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.