Login
Back to forumReply to this topicGo to last reply

Posted By

SukkoPera
on 2024-07-23
16:08:39
 Cartridge ROM Hello World

Does anyone have a Cartridge ROM Hello World ASM example?

Something that I can just compile, burn on an EEPROM, put that in an OpenC16Cart, plug that into a machine, turn it on and get it running? happy

Posted By

Harry Potter
on 2024-07-23
18:56:19
 Re: Cartridge ROM Hello World

SukkoPera, I'm sorry I'm not able to help you out here, but I may be able to help out some people who program for the Plus4 or C16 using cc65 and want to create cartridges. I have some C264 cartridge configurations at https://sourceforge.net/projects/cc65extra/files/memory%20cfgs/. Plus4Cart1 is a 16k cartridge setup, while Plus4Cart2 is a 32k cartridge where the upper 16k is disabled by default and accessed via bank-switching for data. Plus4Cart3 is supposed to have the whole 32k banked in by defaulr but has some bugs in it that prevent it from being useful. SukkoPera, if you want, I believe I have some information on accessing the cartridge ROMs on a Plus4 and can look back at my configurations and tell you the structure of the information that tells the Plus4 that the cartridge is present and how to use it. Just tell me, and I will upload them to my sourceforge.net page.

Posted By

Csabo
on 2024-07-23
19:01:35
 Re: Cartridge ROM Hello World

This would work:

	org $8000
jmp start ; cold start
jmp start ; warm start
db 1
db "CBM"
start lda #$55
sta $FF19
rts
ds $C000-*


The first instruction should be a jump to cold start, the second jump to warm start. The "CBM" bytes are the markers that the ROM checks to see if there's a cartridge there. This will just turn the border green and that's it (to avoid any more complexity, like paging). If you compile this, make sure there's no "program header" (normally the first two bytes in program files contain the loading address), then place it into ROM C1/C2/C3 Low in YAPE, it should work.

Posted By

SukkoPera
on 2024-07-24
03:50:09
 Re: Cartridge ROM Hello World

@Harry Potter: Thanks for the info, I appreciate what you are doing with cc65 but it doesn't suit what I'm trying to do. I already have an ASM program that I would like to turn into a ROM and I definitely don't want to rewrite it in C. Also I'm doing C (well, actually C++) all day long for my job and I do like a bit of variation in the evenings! happy

@Csabo: Thanks, it seems to work. I have ported it to ACME syntax (it is now my favourite assembler) and will post the updated code tonight.

Posted By

Harry Potter
on 2024-07-24
07:50:54
 Re: Cartridge ROM Hello World

I'm glad for your compliment, and I'm sorry I couldn't be all that helpful. sad

Posted By

zzarko
on 2024-07-26
13:02:01
 Re: Cartridge ROM Hello World

@SukkoPera: you can also take a look at Plus4 implementation for Magic 264 cartridge, at least the startup part, as I guess that is what interest you the most:

https://bitbucket.org/zzarko/magic-cartridge-generator/src/main/menu-plus4.asm

I am not sure (I haven't tried it), but it could be that my cartridge generator could produce code that would run on OpenC16Cart also.

Posted By

SukkoPera
on 2024-07-27
16:13:49
 Re: Cartridge ROM Hello World

Thanks @zzarko, it would be nice but my question was not meant for the OpenC16Cart! wink

Posted By

Harry Potter
on 2024-07-27
18:18:26
 Re: Cartridge ROM Hello World

I'm wondering what the OpenC16Cart is. I'll Google it now. happy BTW, A couple years ago, I was working on some Plus4 cartridge memory configurations for cc65. I did well, but right now, there are two problems: 1. the RAM behind the cartridge is not visible. I can port Hidden64 there, and that should help. 2. the 32k version that keeps the cartridge active except when accessing the kernal (plus4cart3) is not working: the test program usually locks up while displaying the text. I think I'm not handling interrupts properly. I believe I have the Plus4 PRG and some Mapping documents and should pursuing them. I have version 1 for 16k cartridges and version 2 for 32k setups that treat the upper 16k as data in a way similar to Hidden64: it's banked out by default and banked in upon access. They are at https://sourceforge.net/projects/cc65extra/files/memory%20cfgs/.

Posted By

Harry Potter
on 2024-07-27
18:23:54
 Re: Cartridge ROM Hello World

I like it. happy Will it work on a Plus4 as well? I have experience with the software of the computer but not the hardware. How easy will one be to create?

Posted By

SukkoPera
on 2024-07-28
03:10:29
 Re: Cartridge ROM Hello World

Of course it will.

It's very simple to solder, just 1/2 sockets and some pin headers. It can't get any simpler than that wink.

Posted By

Harry Potter
on 2024-07-28
04:16:57
 Re: Cartridge ROM Hello World

Thank you. happy

Posted By

zzarko
on 2024-07-28
13:19:50
 Re: Cartridge ROM Hello World

@SukkoPera: Startup code for magic 264 cartridge should be usable on any cart, that is what I meant. How much of that code you need, depends on the software you want to run. For example, if it is a game that wasn't available in a cartridge format and was loaded from tape or disk, you'll probably need to initialize a lot of stuff that Plus/4 initializes before showing BASIC prompt, as those games often expect certain locations to have values exactly as after BASIC prompt. If it is however something made from start to run from cartridge, then only a basic startup code could be sufficient. Menu code for Magic 264 cartridge assumes "worst" scenario and does all the initializations.

Magic 264 cart is more complicated as it includes banking for more than 32k, but it is still easy to solder as all are through-hole components:
https://github.com/msolajic/c264-magic-cart

P.S. I guess you already know all this, sorry if I wrote obvious stuff...

Posted By

SukkoPera
on 2024-07-28
13:50:38
 Re: Cartridge ROM Hello World

Lol, no, any help is welcome, my 6502 ASM programming career has just started, so thanks, I'm sure that code will be very helpful. But now you probably got into trouble, I will likely have to get in touch with you for help happy.



Back to topReply to this topic


Copyright © Plus/4 World Team, 2001-2024. Support Plus/4 World on Patreon