[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