Re[2]: [cc65] preprocessor hazzle...

Date view Thread view Subject view

From: groepaz (
Date: 2002-07-31 01:59:47

Hello Ullrich,

>> i have knocked up a testprog that shows the problem more exactly (and
>> another problem aswell).... attached at the bottom of this mail :)

UvB> Thanks a lot! I'm out of town until tomorrow evening, so don't expect any news
UvB> before thursday.

no problem :)

anyway.... found another thing :=P

that is, the runtime library appearently gets the result of the
modulo-operation wrong - the sign of the remainder to be exact. i have
checked with gcc (uhmz, to lazy to search for any proper definition, i
believe in gcc for that matter ;=P) and it shows that

sign(a % b) == sign (a)

the current implementation applies the same rules to the
modulo-operation as to the division/multiplication here, thus getting
the wrong result in 3 of 4 cases ;=P

however, i have looked at the runtime lib myself and noticed that not
only mod.s and lmod.s would need a patch, but it would probably make
sence to also modify the helper-routines and mul/div routines maybe
aswell to make the code more clean (patching mod.s is easy, but not
quite clean... and patching lmod.s is quite ugly without modified
helper routines).

a dirty hack for mod.s is below...

Best regards,

--- mod.s

        ldx     #0
        jsr     popsargs        ; Get arguments from stack, adjust sign
        jsr     udiv16          ; Do the division
        ldy     ptr1            ; Result is in sreg, remainder in ptr1
        ldx     ptr1+1

        lda     tmp1            ; get back sign of divisor
        eor     tmp2
        bpl     L3              ; dont adjust
        jmp     negax           ; Adjust sign

To unsubscribe from the list send mail to with
the string "unsubscribe cc65" in the body(!) of the mail.

Date view Thread view Subject view

This archive was generated by hypermail 2.1.3 : 2002-07-31 02:00:26 CEST