From 6635346ae8479f933019bcef23fc6bead09fd1c1 Mon Sep 17 00:00:00 2001 From: Stephen Heumann Date: Sat, 6 Feb 2021 00:11:44 -0600 Subject: [PATCH] Implement llabs and imaxabs functions. These give the absolute value of 64-bit numbers. --- stdlib.asm | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/stdlib.asm b/stdlib.asm index af6d175..99d7669 100644 --- a/stdlib.asm +++ b/stdlib.asm @@ -496,6 +496,47 @@ labs start lb1 creturn 4:i end +**************************************************************** +* +* long long llabs(long long i) +* +* Return the absolute value of i. +* +* Inputs: +* i - argument +* +* Outputs: +* Returns abs(i). +* +**************************************************************** +* +llabs start +imaxabs entry +retptr equ 1 + + csubroutine (8:i),4 + stx retptr + stz retptr+2 + + ph8 i + jsl ~ABS8 + pla + sta [retptr] + ldy #2 + pla + sta [retptr],y + iny + iny + pla + sta [retptr],y + iny + iny + pla + sta [retptr],y + + creturn + end + **************************************************************** * * ldiv_t ldiv(n,d)