Home
Search
Games
Tapes
Covers
Cheats
Maps
Software
New Stuff
Hall Of Fame
HVTC
Game Endings
Solutions
Remakes
Publications
Magazines
Effects
Top List
Members
Groups
Features
Pony Encyclopedia
Hardware
Tools
Options
Forum

Back to forum | Reply to this topic | Go to last reply

Posted By

bszggg
on 2024-04-21
18:34:19
 cc65 : questions, answers and experiences

This topic is about using cc65 for the plus4 programming.

Posted By

bszggg
on 2024-04-21
18:38:59
 Re: cc65 : questions, answers and experiences

Hi!
has anyone of us made such a program with this that the graphic storage space did not cause an obstacle.
Ex: Did it start at $4,000?
or did you somehow translate something that copied itself back, or did you solve this?

As my first idea, I try to move the graphical space move to $6000, and it works ($ff12), but the color left on wrong place.. than I move it with $ff14, but the interrupt always set back to $1800

do you have any idea to solve this.
(my code longer than $1000-$1800 and I would like to use the graphic mode too)

THX!

Posted By

Haegar
on 2024-04-22
09:01:11
 Re: cc65 : questions, answers and experiences

Hello,

I hope I understood your question correctly:

colormap = $3800
bitmap = $4000

* = $xxxx

lda #$3b ; Hires on
sta $ff06
lda $FF07 ; PAL/NTSC friendly
lda #>bitrmap ; bitmap at $4000
ora #$18 ; $18 = multicolor, $08 = hires
sta $FF07

lda $FF12
and #$03 ; keep lowest 2 bits (sound)
ora #$10 ; $08 = $2000, $10 = $4000, etc., and RAM on
sta $FF12

lda #>colormap ; color map at $3800
sta $FF14

You can place the colormap in memory every $800 ($800, $1000, $1800, ...), the bitmap every $2000 ($2000, $4000, $6000,...).

Posted By

bszggg
on 2024-04-22
11:52:22
 Re: cc65 : questions, answers and experiences

@Haegar
Yes..
It works if is use SEI..
the interrupt switch back the original (color and luma) address.

a good solution to use the $07fb address

POKE(131,32); // 32 1-es mode, 96 2mod , 160 3mode, 224 4mode ||| $83 $60
POKE(0xff12,0xd8); // Graphical bitmap push to $6000
POKE(0x07FB,0x5f); // color and luma push below $6000 ($5800)

Thank you for your answer.. I'll use it for multicolor change happy HUG!

Posted By

Haegar
on 2024-04-22
12:13:21
 Re: cc65 : questions, answers and experiences

I asked a similar question a while ago:

change graphics memory

So the thanks go more to Csabo

Posted By

bszggg
on 2024-05-07
09:23:46
 Re: cc65 : questions, answers and experiences

-How can I delete my post? (I have just edit button)

(Finally I found the solution
I have to set it as a star
*gg->yposition= 0x08;
and get is from with star
POKE(3072, *gg->yposition);

-------------------------------
UPDATE:

Do somebody use a load in cc65?

This code works:

cbm_k_setnam("loader");
cbm_k_setlfs(0,8,0);
cbm_k_load(0, 0x0c00); // 0 is LOAD, 1 is VERIFY, 2 and 3 are VERA.

But just PRG.

How can I load SEQ?



-------------------------------
UPDATE:
This works, but the first 2 bytes has been dropped out:

cbm_k_setnam("sequential,s,r");
cbm_k_setlfs(0,8,0);
cbm_k_load(0, 0x0c00); // 0 is LOAD, 1 is VERIFY, 2 and 3 are VERA.



-------------------------------
UPDATE:
A megoldás: / The solution:
nem hívom meg utasításként, hanem asm utasításban gépikódként, és előtte be jkell lapozni a ROM-ot, majd visszalapozni a RAM-ot.
Érdekesség még, hogy a cbm_k_chkin(2); -t ami kiválasztja a megnyitott csatornát, azt minden bájt olvasása előtt meg kell hívni.
/ Call kernal routin with assembly, and need to do the paging manually, and it has to be call the cbm_k_chkin(openedchannel) before every bytes read


Tehát A megoldás ez lett:

unsigned char getByte()
{
unsigned char b;
__asm__ ("STA $FF3E");
__asm__ ("JSR $ffcf");
__asm__("STA $0c00");
__asm__ ("STA $FF3F");
b = PEEK(3072);
printf("\nb: %x",b);
return b;
}

...main:
cbm_k_setlfs(2, 8, 2);
cbm_k_setnam("sequential,s,r");
cbm_k_open();

for (i = 0; i < 10; ++i) {
cbm_k_chkin(2);
b=getByte();
printf("\n-x- %x",b);
}
cbm_k_close(2);


Posted By

Harry Potter
on 2024-05-08
07:32:33
 Re: cc65 : questions, answers and experiences

The reason the first two bytes are dropped out is because the kernal LOAD routine treats the file as a program. You need to use cbm_open()/cbm_read()/cbm_close().



Back to top | Reply to this topic


Copyright © Pony World Team, 2001-2024