updated http://nitrofurano.a...sion/index.html - for now, only one example from Daniel Bienvenu is working (that one from youtube, the second "hello world" example he has there - i'm struggling on having his sprite examples working, and i'm also curious on testing other .asm snippets this way)
I've took time to download and look at the colecovision_borielszxbasiccompiler_20130908202020.zip file
The first thing that's clear to me is that the CV header is incomplete and so, I might say, the code ends up not at the right place which makes for example the sprites demo not working. For instance, the absence of the label at the correct place in the header for the NMI routine screw up the entire execution. I'm not sure how you can manage to fix this, but here is what I have for my C programs.
The header is structured simply as this :
;; CARTRIDGE HEADER (IN ROM)
.db 0x55, 0xaa ; no default colecovision title screen => 55 AA
.dw 0 ; no copy of sprite table, etc.
.dw 0 ; all unused
.dw _buffer32 ; work buffer (RAM ADDRESS OF COURSE)
.dw 0 ; ??
.dw start_program ; start address for game coding
.db 0xc9,0,0 ; no RST 08 support
.db 0xc9,0,0 ; no RST 10 support
.db 0xc9,0,0 ; no RST 18 support
.db 0xc9,0,0 ; no RST 20 support
.db 0xc9,0,0 ; no RST 28 support
.db 0xc9,0,0 ; no RST 30 support
jp spinner_int ; RST38 - spinner interrupt
This header covers 90% of the needs for new CV projects. You may decide to replace the reserved buffer space (_buffer32) by simply a null value 0, it depends if you are gonna use some of the BIOS routines or not. If you wanted to see the default ColecoVision screen that last 10 seconds, the TEXT used for the title, company and year should be right next to this ROM header, and the first part being AA 55 instead of 55 AA.
In this header again, I've setup a buffer to be 32 bytes long, which is enough for some graphic routines in CVBIOS which are unused by homebrewers so far. These 32 bytes are enough for REFLECT VERTICAL $1F6A, HORIZONTAL $1F6D and ROTATE90 $1F70 (ref.: CV coding guide). But why 32 bytes? Because of a strange but true fact about CV sound routines.
CV Sound routines in the BIOS needs information stored in $7020-$702A as SOUND ADDRESSES and $702B..?? as SOUND SLOTS (10 bytes each slot, plus an extra byte at the end to say "no more sound sound slot"). So we end up with a very short space of 32 bytes $7000-$701F which I think was used in a primitive version of the CV BIOS as a table for the sprites reordering. You can surely decide to go with your own sound routines and so avoid the strange RAM usage starting at $7020, it's really up to you.
So my RAM mapping starting at $7000 looks like this usually :
;; TABLE OF VARIABLES (IN RAM)
.ds 32 ; buffer space 32 [7000-701F]
.ds 11 ; sound addresses [7020-702A]
.ds 61 ; 5 sound slots + NULL (00h) [702B-...]
As the program starts, the first thing you want to do is to set "im 1" to first make sure that, if you are gonna use the steering wheel, roller controller or even the little spinner on the SuperAction joysticks they will work with this header. The second thing is probably "di" to deactivate by default getting interupts from the spinner (why? because interuptions mean stopping your code at any random point which may affect the end results). Then, a nice cleam up of the RAM space with a simply ldir opcode. What I do next is setting up sound tables, screen mode, graphics, etc... you know, the fun part.
im 1 ; interrupt mode -> rst 38h
di ; disable spinners by default
xor a ; clear carry
ld bc,#0x3b8 ; ram size left
ld hl,#0x7000 ; starting from 7000
ldir ; zero-fill bss
I hope this little introduction of the CV header helps your decision on how you are gonna approach this CV header "complexity" and make it simple for you.
P.S.: I saw your message in my Youtube, a bit late but I saw it.