Re: [cc65] ca65 syntax problems

Date view Thread view Subject view

From: Ullrich von Bassewitz (uz_at_musoftware.de)
Date: 2001-11-05 17:42:16


On Sun, Nov 04, 2001 at 01:49:12PM +0100, groepaz wrote:
> yes and no ;=) that is, for big projects having relocatable code and
> such is a real bonus..... but for most other stuff (that would be
> mostly everything except the one or two bigger things everyone does
> once in a while) having to tinker with a linkerscript where ".org
> xxxx" could have been enough is kindof overkill. (and no, simply using
> another assembler in that case isnt the type of solution i'd accept
> ;=P)

Using "-t none" for the linker, one may specify the start address by using "-S
addr" which means that no linker config is needed.

> i guess the main issue with that is that people cant see a reason why
> stuff that worked fine for 15years has to work entire differently all
> of a sudden ;=) (i know for myself atleast that it took me some time
> to adapt to the "big" compiler/assembler/linker toolsets)

You are right in some way. I've had to learn that many Commodore people seem
to be rather old fashioned, maybe this is why they are still using the old
machines.

> UvB> Using
> UvB>         .feature pc_assignment, dollar_is_pc
> UvB> things like
> UvB>         $ = $200
> UvB> are completely legal.
>
> uhhh, that means i could write code like:
[...]

Not exactly like this, because .org (or assignment to PC which is the same as
far as the assembler is concerned) does not fill the gap between the two code
pieces. Here is a complete example that works with PC assignment and without a
linker script:

---------------------------------------------------------------------------
        .word   start           ; Load address for disk file

        * = $1000

start:  lda     #<irq
        ldx     #>irq
        sei
        sta     $0314
        stx     $315
        cli
        jmp     *

        .res    $1100-*

irq:    inc     $d020
        jmp     $ea31
---------------------------------------------------------------------------

Translate this via

        ca65 --feature pc_assignment foo.s
	ld65 -t none -S \$1000 -o foo foo.o

Load and execute by using

        LOAD "foo",8,1
	SYS 4096

> btw why the dollar-sign and not the asterix (*) (tasm uses that one
> for eg, seen that in other assemblers aswell)

There are assemblers that use the dollar sign. The feature "dollar_is_pc"
allows the dollar sign as designator for the current location. With just
"pc_assignment" enabled, the star is used instead (the normal ca65 behaviour).

> 115200bps actually work pretty fine even using polling operation only
> (didnt bother writing an irq-based driver yet)

Polling is not a good idea because you may loose characters when doing things
like outputing a "\n" which makes the screen scroll. The current driver (which
is based on sources written by Craig Bruce) uses interrupts for receiving and
polls for sending. And even this means that when sending, the driver may not
reach the full baud rate, so it's one of the "change as soon as possible"
things.

Regards


        Uz


-- 
Ullrich von Bassewitz                                  uz_at_musoftware.de
----------------------------------------------------------------------
To unsubscribe from the list send mail to majordomo_at_musoftware.de 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 : 2001-12-14 22:05:43 CET