[cc65] Re: need help getting external long from asm

From: Egan Ford <egan1sense.net>
Date: 2011-11-23 09:34:04
Ignore this message.  I was using %d instead of %ld to check my results.  Doh!

On Tue, Nov 22, 2011 at 5:56 PM, Egan Ford <egan@sense.net> wrote:
> I am not sure what I am doing wrong here.
>
> Below is my timer.s code.  It just increments a 32bit unsigned little
> endian int while waiting for a key press.
>
> My c code:
>
> extern unsigned long count;
> extern unsigned char key;
>
> I can read "key", but I always get 0 for count.  If I change long
> count to char count[4], then I can read each byte.
>
> I need to be able to say count = 0 and have all four bytes set to 0,
> and when reading count get a number from 0 to 2^32-1.
>
> Thanks.
>
> timer.s:
>
>        .export _timer
>        .export _count
>        .export _key
>
> KBDCR   =       $D011
> KBDDATA =       $D010
>
> _count: .byte   0,0,0,0
> _key:   .byte   0
>
> _timer: LDA     KBDCR           ; cycles 4      got key?
>        BMI     DONE            ; cycles 2      if neg, got key goto DONE
>        CLC                     ; cycles 2      clear carry
>        LDA     #1              ; cycles 2      A = 1
>        ADC     _count          ; cycles 4      LSB += A
>        STA     _count          ; cycles 4
>        LDA     #0              ; cycles 2      A = 0
>        ROL     A               ; cycles 2      A = carry, carry = 0
>        ADC     _count+1        ; cycles 4
>        STA     _count+1        ; cycles 4
>        LDA     #0              ; cycles 2      A = 0
>        ROL     A               ; cycles 2      A = carry, carry = 0
>        ADC     _count+2        ; cycles 4
>        STA     _count+2        ; cycles 4
>        LDA     #0              ; cycles 2      A = 0
>        ROL     A               ; cycles 2      A = carry, carry = 0
>        ADC     _count+3        ; cycles 4
>        STA     _count+3        ; cycles 4
>        CLC                     ; cycles 2      clear carry
>        BCC     _timer          ; cycles 2 + 1  back to checking for key
>                                ; total = 59
> DONE:   LDA     KBDDATA         ; get key value
>        STA     _key            ; store in _key
>        RTS
>
----------------------------------------------------------------------
To unsubscribe from the list send mail to majordomo@musoftware.de with
the string "unsubscribe cc65" in the body(!) of the mail.
Received on Wed Nov 23 09:34:44 2011

This archive was generated by hypermail 2.1.8 : 2011-11-23 09:34:48 CET