Jump to content
IGNORED

My cc65 version of the compiler directory structure has changed


karri

Recommended Posts

Due to my desire to use larger ROM's I did change the directory and cart logic on my old cc65 compiler.

In the old code the block field was 8 bit and it was followed by an unused byte that was usually $88 0r $00. In the current version the block field is 16 bits long. The high byte contains the highest address bits of the ROM.

 

These bits are driven by the CART1 read strobe and AUDIN.

 

Old projects need to set the content of this unused byte to 0. And it would be good to define the block field in the directory to be a .word instead of a .byte

 

  • Thanks 1
Link to comment
Share on other sites

14 hours ago, 42bs said:

Background info $88 was the executable marker I did use past days for my LOS (Lynx Operating System).

Executable marker... In that case nobody will be missing it. It is gone now.

 

Once I get my 2MB cart debugged/working I might make a pull request to update the main cc65 for 2MB carts as well. The only problem is the automatic insertion of the 2nd boot loader. If an inserted file crosses the boundary that requires flipping AUDIN I could increment the pointer to the end of the block, insert a new copy on the bootloader and then continue with the files.

Link to comment
Share on other sites

  • 6 months later...
On 5/31/2022 at 4:40 PM, karri said:

Due to my desire to use larger ROM's I did change the directory and cart logic on my old cc65 compiler.

In the old code the block field was 8 bit and it was followed by an unused byte that was usually $88 0r $00. In the current version the block field is 16 bits long. The high byte contains the highest address bits of the ROM.

 

These bits are driven by the CART1 read strobe and AUDIN.

 

Old projects need to set the content of this unused byte to 0. And it would be good to define the block field in the directory to be a .word instead of a .byte

 

 

For those of us who still (STILL! 😞 ) haven't learned the details of how these things work, can you give a dumbed-down description of how to fix our setups to work with the revised compiler? How do I go about setting the unused byte to 0 and redefining the block field to .word? What directory is it in? 

I'm back in the programming game now, and I've created my environment with the Karri/nop90 template, which no longer compiles into a working *.lnx file. It's my fault for being out of it the hobby for so long.

 

As always, I'm stumbling on my own ignorance, and I'm humbled by you guys who create these systems and your patience to provide support to knuckleheads like me.

 

Thanks!

Link to comment
Share on other sites

Disregard! @obschan and @MichelS helped me!

In my directory.s file, I needed to make the entry macro look like this:
 

.macro entry old_off, old_len, new_off, new_block, new_len, new_size, new_addr
new_off=old_off+old_len
new_block=new_off/__BLOCKSIZE__
new_len=new_size
	.word	new_block
	.word	(new_off & (__BLOCKSIZE__ - 1))
	.word	new_addr
	.word	new_len
.endmacro

 

Edited by OldAtAtari
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...