[cc65] Porting cc65 to embedded system that has no OS, boot ROM or monitor

From: Ormund Williams <ormundw1panix.com>
Date: 2004-09-23 23:36:59
Hi All

I am using cc65 to maintain the code for an old embedded system based on
the 65c02, I have reverse-engineered the system and this is what I have:

  65C02 1MHz
  32k byte EPROM, 27C256
  32K byte RAM Battery-backed, DS1230Y Dallas
  Real time Clock, DS12887 Dallas
  3 ACIAs, 65C51
  2 8bit input ports, 74LS240
  3 8bit output ports, 74LS374

There is no memory banking, half of the RAM is unused.  The chip selects
are generated from address lines A8 to A15.  The memory map looks like
this:
  0x0000 --> 0x3fff  RAM 16kB
  0x6700 --> 0x6fff  IO
  0x8000 --> 0xffff  ROM 32kB

The board is named CC64, (just coincidence, the name was chosen back in
the '80s) it is a controller for automatic carwashes.  I created a
linker config file but my understanding of the zeropage segment must be
incorrect.  Here is the cc64.cfg file:

--------****cc64.cfg****--------

MEMORY {
    RAM: start = $0, size = $2000, define = yes;
    NVRAM: start = $2000, size = $2000, define = yes;
    ROM: start = $8000, size = $8000, file = %O;
}
SEGMENTS {
    CODE:        load = ROM, type = ro;
    RODATA:      load = ROM, type = ro;
    VECTORS:     load = ROM, type = ro, start = $FFFA;
    DATA:        load = ROM, run = RAM, type = rw, define = yes;
    BSS:         load = RAM, type = bss, define = yes;
    ZEROPAGE:    load = RAM, type = zp, start = $0, size = $100, define
= yes;
}
FEATURES {
    CONDES: segment = RODATA,
            type = constructor,
            label = __CONSTRUCTOR_TABLE__,
            count = __CONSTRUCTOR_COUNT__;
    CONDES: segment = RODATA,
            type = destructor,
            label = __DESTRUCTOR_TABLE__,
            count = __DESTRUCTOR_COUNT__;
}

--------****cc64.cfg****--------

When I try to compile and link an empty main() the linker camplains:

[ormund@station1 src]$ ld65 -C cc64.cfg cc64.o interrupts.o main.o \
cc64.lib -m test.map -o test.bin
ld65: Error: cc64.cfg(12): Range error

Every thing up to this point has been smooth sailing, any ideas?

-- 
Ormund Williams <ormundw@panix.com>
ORMLAB

----------------------------------------------------------------------
To unsubscribe from the list send mail to majordomo@musoftware.de with
the string "unsubscribe cc65" in the body(!) of the mail.
Received on Thu Sep 23 23:37:04 2004

This archive was generated by hypermail 2.1.8 : 2004-09-23 23:37:12 CEST