C64: CP/M & SID Playing

Hi, today I'm pressenting a new video about the ARM powered C64 in Dual Core mode (6510 & Z80) playing a SID file. That is, while Z80 executes CP/M, 6510 executes irq-based SID player.
Border color denotes:
Yellow: irq
Light blue: 6510 instruction
Red: Z80 instruction

Great sid tune comes from Uctumi of PVM, sorry for dirty irq, nasty timmings and Lo-fi.

Tools used:
sidreloc to relocate sid player&data from $1000 to $6000 avoiding CP/M overlappings
PSID64 for prg generation (-n: no interface)
bin2hex for .h header file generation to include from C code

Also, some 6502/10 asm code for SID player initializing and irq vector redirecting:

SRC Code:
* = $5FE7
INIT     LDA #$00
         JSR $6000
         LDA #<VECTOR
         LDX #>VECTOR
         STA $0314
         STX $0315
VECTOR   JSR $6003
         JMP $EA31

OBJ Code:
A9 00 20 00 60 60 78 A9
FA A2 5F 8D 14 03 8E 15
03 58 60 20 03 60 4C 31

Start the thing with:

SYS 24551      $5FE7 (INIT)
SYS 24557      $5FE7 (REDIR)
SYS 2176       CP/M Start

2 comentarios:

  1. Hi!
    I'm watching your work since found published at Forum64... I'm 128er and own 3 CPU computer, phisically it is 4 processor computer: Commodore 128 (8502, Z80), SuperCPU128 (65816), CP/M Cartridge (Z80) - really wide base of families: X65, 65K, X80. I tried only preemptive multitasking using IRQ and buffers, when I look at your video, I'm thinking: is it dual core multithreading or preemptive multitasking? CPUs like 6502, Z80 or X65, X80 family can not normally process two tasks at once - but possible is at least to reach multitasking... so, how it works? It's only my stupid mind multitasking or real at once processing two tasks?

  2. Hi Telmo!
    I have lot of Qs about working 6502 and Z80 at once - I tried on C128 with CP/M cartridge call from internal Z80 the external (in cartridge) - not success - separately works, but my Q is about memory and data bus contention - look at ZX Spectrum contended memory... How you solved memory and data bus sharing?
    Really it is for me mystic and if is possible to do it on C128 (my config incl. SCPU128 and CP/M cartridge) it will be next step to get work both Z80s at once. New step will be also Q, maybe you know answer: where is located expansion port IO in Z80 RAM? Important: Not in CP/M RAM. If you are interest and want to share anything contact me personally by miiro79[at]hotmail[dot]com.
    Thank you.
    Miro Karkus (MIRKOSOFT)