From: Ullrich von Bassewitz (uz_at_musoftware.de)
Date: 2000-04-04 08:46:26
On Mon, Apr 03, 2000 at 06:05:39PM -0500, David Lloyd wrote: > I'm writing the code for some bank-switched ROMs using ca65. The problem > I'm running into, is that there are 8 ROM banks. Bank 0 is at $D800-DBFF, > and the other 7 are at the address $DC00-$DFFF. I want to write my > software so that I can have more than one segment in the same address > space, so that I only have to link it all once. > > The idea is that I have all my source files, that I can assemble and link > into one 8K ROM image that can go directly to EPROM. This is easy (but maybe I got something wrong:-). Here is a sample linker configuration: MEMORY { BANK0: start = $0D800, size = $0400, type = ro, file = %O, fill = yes, fillval = 255; BANK1: start = $0DC00, size = $0400, type = ro, file = %O, fill = yes, fillval = 255; BANK2: start = $0DC00, size = $0400, type = ro, file = %O, fill = yes, fillval = 255; BANK3: start = $0DC00, size = $0400, type = ro, file = %O, fill = yes, fillval = 255; BANK4: start = $0DC00, size = $0400, type = ro, file = %O, fill = yes, fillval = 255; BANK5: start = $0DC00, size = $0400, type = ro, file = %O, fill = yes, fillval = 255; BANK6: start = $0DC00, size = $0400, type = ro, file = %O, fill = yes, fillval = 255; BANK7: start = $0DC00, size = $0400, type = ro, file = %O, fill = yes, fillval = 255; } SEGMENTS { BOOT: load = BANK0, type = ro; CODE1: load = BANK1, type = ro; CODE2: load = BANK2, type = ro; ... } The only problem is, that you have to divide your code into segments that are small enough to fit into the banks. Having a smaller segments is better, since you can put more than one segment in a bank, and having very small segments allows you to move them from one bank into another if you are out of space in one bank. Regards Uz -- Ullrich von Bassewitz uz_at_musoftware.de
This archive was generated by hypermail 2.1.3 : 2001-12-14 22:05:36 CET