--- /dev/null
+/*
+ * 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";
+
+
+
.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
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.