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   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().
  |   
 |  
  |