Page 2 of 3

Re: Hello from Italy!

Posted: Sun Mar 13, 2022 9:06 am
by Scouter3d
Hi,

looks nice!
are the Commodore Balloons moving? btw. "38911 BASIC BYTES FREE" is wishfull thinking ;0)

Cheers, TOM:0)

Re: Hello from Italy!

Posted: Sun Mar 13, 2022 10:27 am
by MADrigal
:D :D :D :D

Re: Hello from Italy!

Posted: Sun Mar 13, 2022 11:15 am
by @username@
Hi Nippur72,

The important cartridge vectors are

$BFE8 - Program entry point (START)
$BFEA - Interrupt Service Routine Handler - just JMP $FF52 to get BIOS to clean up and set the world OK again :)
$BFEC - Character table offset for numerals - used by Game Level and Score
$BFED - Number base - always seems to be $10
$BFEE - VDP Address for BIOS $FE83
$BFF0 - VDP register values 0 to 7 - set by BIOS $FF66 - saves you doing it :)
$BFF8 - Pointer to data structures to download to VRAM
$BFFA - Pointer to data structures to fill VRAM
$BFFC - Reset vector (default $F808)
$BFFE - Interrupt handler (default $FF3F)

Hope that saves you some time!

Re: Hello from Italy!

Posted: Sun Mar 13, 2022 2:49 pm
by Mobsie
Hi, you compare kickc with cc65? Or you just a kickc user)
I think i will try to compare it because i read a lot about kickc. I need to understand how made the target file first.

Re: Hello from Italy!

Posted: Sun Mar 13, 2022 3:20 pm
by nippur72
Mobsie wrote:
Sun Mar 13, 2022 2:49 pm
Hi, you compare kickc with cc65? Or you just a kickc user)
I think i will try to compare it because i read a lot about kickc. I need to understand how made the target file first.
I love KickC, compared to cc65 it produces very efficient code, mostly thanks to the paradigm of not using stack for passing parameters (so function can't be reentrant -- but it's not a big drawback). So it has became the compiler of choice for my 6502 projects when I don't write in assembly directly (for which I have my own dedicated macro preprocessor/assembler).
Pros:
- very optimized and efficient
- doesn't link bloated libraries
- project is alive and rather actively maintained

Cons:
- it has lot of bugs, sometimes it fails to compile with strange errors or java null pointer exception
- slow to compile (when optimizations are on)
- non standard C
- uses KickAssembler for compile/link, it doesn't produce a classic .lst file (as far as I know)

For the target files, I use the following:
kickc/creativision_16KROM.ld

Code: Select all

// Creativision 16KROM cartdrige, with 1KRAM, 2KB BIOS
.file [name="%O", type="prg", segments="Program"]
.segmentdef Program [segments="Code, Data"]
.segmentdef Code [start=$8000,min=$8000,max=$bfff,outBin="creativision_codeseg.bin"]
.segmentdef Data [start=$0200,min=$0200,max=$03ff,outBin="creativision_dataseg.bin"]
kickc/creativision_16KROM.tgt

Code: Select all

{
    "extension": "prg",
    "link": "creativision_16KROM.ld",
    "start_address": "0x8000",
    "cpu": "ROM6502",
    "interrupt": "hardware_all",
    "emulator": "echo",
    "defines": {
        "__CREATIVISION__": 1,
        "CREATIVISION": 1,
        "CREATIVISION_16KROM": 1,
        "__KICKC__": 1
    }
}
and compile with:

Code: Select all

kickc -targetdir kickc -t creativision_16KROM demo.c -o demo.prg -e
then I take the resulting "creativision_codeseg.bin" (not .prg) and use it to create a .BIN cart file (with start address at $BFFC).

Re: Hello from Italy!

Posted: Thu Mar 17, 2022 12:17 pm
by Mobsie
Yes, i play with different example and the code is cool!
Would be interesting if someone move over the lib from cc65 to kickc.

Re: Hello from Italy!

Posted: Thu Mar 17, 2022 12:36 pm
by nippur72
Mobsie wrote:
Thu Mar 17, 2022 12:17 pm
Yes, i play with different example and the code is cool!
Would be interesting if someone move over the lib from cc65 to kickc.
I've written a sort of TMS9918 library for my previous Apple1 project which I'm porting to Creativision, so I will also look at cc65 and see if I can recycle something :-)

When finished I'll put it in a github repo for anyone use it or contribute.

Edit: cc65 creativision related stuff is here: https://github.com/cc65/cc65/tree/maste ... eativision

Re: Hello from Italy!

Posted: Sun Mar 20, 2022 12:28 am
by carlsson
nippur72 wrote:
Sun Mar 13, 2022 8:58 am
the disk drive format seems to be the same used in Laser 500
How surprising for being VTech! I thought every machine they made was unlike and incompatible with all the others in their line.

Speaking of which, there was a fellow on Twitter who had a joystick interface for the Laser 200 series, which apparently was sold with joystick(s) permanently attached. Many years ago he chopped off the cable to turn the joystick into an Atari compatible one, leaving the severed joystick interface to its destiny. He was willing to donate the interface to anyone needing it. I don't have a 200, but wonder if the expansion port would by chance have anything in common with the 500, or if the compatibility between different Laser products only went as far as the software side.

Re: Hello from Italy!

Posted: Sun Mar 20, 2022 1:53 am
by Ransom
Writing emulators and FPGA cores?! Excellent, welcome.

Re: Hello from Italy!

Posted: Sun Mar 20, 2022 8:52 am
by nippur72
carlsson wrote:
Sun Mar 20, 2022 12:28 am
I don't have a 200, but wonder if the expansion port would by chance have anything in common with the 500, or if the compatibility between different Laser products only went as far as the software side.
the 200 and 500 share the same basic design as the 500 was meant to be an improvement of the 200 with a custom video chip in place of the off-the-shelf MC6847. The user port is compatible, I used to switch joysticks/printer between the 310 and 500. I'm not sure about the expansion port, the pins seems to be identical with the only difference that the 500 make use of some address pins for bank switching.

My guess is that the 500 was originally meant to fit in a Laser 310 keyboard, but once the MSX clone project was aborted they put the 500 in the extended keyboard they made for the MSX, and shipped the previous design as "Laser 350" (which indeed is a 500 in a 310 case). From the keyboard schematic you can clearly see that the rows for the extended keys (F1-F10, arrows, etc) were added later and are to be queried in a different way than the standard keys.

I also think that when designing the 500, they dropped the Laser 200 disk drive format for the one they developed for the Salora Manager, because it was more capable and allowed the machine to be sold as a CP/M compatible. But they managed to keep the same commands in the 200 and 500 versions of the DOS, indeed they shipped the same user manual along with the disk drive.

The Creativision/Salora is a totally different project, I still wonder why they didn't push it as their main home computer line instead of the Laser 210 ...it could have been a great success. I guess one of the reasons is cost reducing, CV has 3 third-party chips (PIA,TMS/SN), while the 210 has only one (the video chip).