Magic Voice Schematics

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
11 messages Options
Reply | Threaded
Open this post in threaded view
|

Magic Voice Schematics

Grósz Attila
Hi there,

I have just found this:
http://nemetzpower.de/Bilder/Magic/Plan03.pdf 

To the best of my knowledge there are no schematics yet
available on
Funet. Could it be added to the archives?

While we're at it... Has anyone experimented with the the MV
lately? I
would be curious to see parameter dumps from the MV
cartridge towards
the speech chip and compare them to my C364 dumps.

Regards,
Attila

       Message was sent through the cbm-hackers mailing list

Reply | Threaded
Open this post in threaded view
|

Re: Magic Voice Schematics

Marko Mäkelä-3
Hi Attila,

> I have just found this:
> http://nemetzpower.de/Bilder/Magic/Plan03.pdf 
>
> To the best of my knowledge there are no schematics yet
> available on
> Funet. Could it be added to the archives?

It's now available at
http://www.funet.fi/pub/cbm/schematics/cartridges/c64/magic-voice/.

> While we're at it... Has anyone experimented with the the MV
> lately? I
> would be curious to see parameter dumps from the MV
> cartridge towards
> the speech chip and compare them to my C364 dumps.

Have you tried disassembling the ROM dump that is on FUNET?

        Marko

       Message was sent through the cbm-hackers mailing list

Reply | Threaded
Open this post in threaded view
|

Re: Magic Voice Schematics

Grósz Attila
Marko Mäkelä wrote:

>It's now available at
>http://www.funet.fi/pub/cbm/schematics/cartridges/c64/magic-voice/.
>
>  
>
That was quick :-)

>Have you tried disassembling the ROM dump that is on FUNET?
>
>  
>
I have just made a quick disassembly of it. Well, reverse engineering
the ROM program
itself takes more time than simply dumping the parameters with an
adequately modified
emulator after the interfacing is done ;-) Which puts up the question:
is it possible to load
the MV cartridge into VICE? I could not attach it properly as 'General
16 cartridge'.
Note, that I am nowhere near a C64 expert though ;-)

Cheers,
Attila





       Message was sent through the cbm-hackers mailing list

Reply | Threaded
Open this post in threaded view
|

Re: Magic Voice Schematics

Nicolas Welte
Grósz Attila wrote:
> I have just made a quick disassembly of it. Well, reverse engineering
> the ROM program
> itself takes more time than simply dumping the parameters with an
> adequately modified
> emulator after the interfacing is done ;-) Which puts up the question:
> is it possible to load
> the MV cartridge into VICE? I could not attach it properly as 'General
> 16 cartridge'.

The memory mapping of the MV is quite complicated. I think it starts up in
Ultimax configuration (ROM at $a000-$bfff and $e000-$ffff), and then copies
part of the code to $c000-$cfff. Then the memory configuration is changed, so
the C64 Kernal and BASIC is active, and a normal 8k cartridge ROM at
$a000-$bfff is present (or does it also copy to RAM $a000-$bfff? I forgot.).
So it behaves quite differently than a general 16k cartridge ;)

Nicolas



--
-> My Commodore hardware projects and the X1541 Shop at http://x1541.de <-

       Message was sent through the cbm-hackers mailing list

Reply | Threaded
Open this post in threaded view
|

Re: Magic Voice Schematics

Grósz Attila
Hi,

Nicolas Welte <[hidden email]> írta:

> The memory mapping of the MV is quite complicated. I think it starts
> up in Ultimax configuration (ROM at $a000-$bfff and $e000-$ffff), and

Yep, that's correct.

> then copies
> part of the code to $c000-$cfff. Then the memory configuration is

This is indeed so.

> So it behaves quite differently than a general 16k cartridge ;)

oh well :-) Does it mean that it should be specifically taken care of in
the emulator code itself, as many of the C64 cartridges? Or may I
attempt to attach it as Ultimax cartridge (which one is that in VICE's
menu?).

Regards,
Attila


       Message was sent through the cbm-hackers mailing list

Reply | Threaded
Open this post in threaded view
|

Re: Magic Voice Schematics

Marko Mäkelä-3
Hi Attila,

> > So it behaves quite differently than a general 16k cartridge ;)
>
> oh well :-) Does it mean that it should be specifically taken care of in
> the emulator code itself, as many of the C64 cartridges? Or may I
> attempt to attach it as Ultimax cartridge (which one is that in VICE's
> menu?).

Attach it as Ultimax first, and set some sort of watchpoints or breakpoints
outside the valid UltiMax address range ($d000-$ffff and $0000-$xfff,
I can't remember if it's first 1, 2, 4 or 8 kilobytes that are mapped to RAM).
It should probably write to some onboard bank selection register short before
crashing.  Then implement that bank selection register.

Sorry, I'm too busy to have a look at the schematic diagram.

        Marko

       Message was sent through the cbm-hackers mailing list

Reply | Threaded
Open this post in threaded view
|

Re: Magic Voice Schematics

Grósz Attila
Hi there,

> Attach it as Ultimax first, and set some sort of
watchpoints or
> breakpoints

I have made an Ultimax CRT from the ROM dump with Markus
Brenner's MCRT program but I'm afraid it won't work as the
16 kb Ultimax cartridge maps its lo ROM at $8000 and not
$A000 as the MV.

Will have another look at it when I'm home.

> It should probably write to some onboard bank selection
register
> short before
> crashing.  Then implement that bank selection register.

Watching at the disassembly, I think the bank selection
register is at $df86 while the MV's TIA is accessed thru
$df80-$df87. So both the speech chip and the bank selection
are accessed via the TIA. These are the first impressions
only though. Guess I have to take another look at the 6525
data sheets as well...
 
> Sorry, I'm too busy to have a look at the schematic diagram.

Np ;-) I'm busy as well.
 
Regards,
Attila

       Message was sent through the cbm-hackers mailing list

Reply | Threaded
Open this post in threaded view
|

Re: Magic Voice Schematics

Richard Atkinson
On Wed, 6 Apr 2005, [ISO-8859-2] Grósz Attila wrote:

> Watching at the disassembly, I think the bank selection
> register is at $df86 while the MV's TIA is accessed thru
> $df80-$df87. So both the speech chip and the bank selection
> are accessed via the TIA. These are the first impressions
> only though. Guess I have to take another look at the 6525
> data sheets as well...

I've had a go at hand-disassembling the first part of the Magic Voice
code, using information from the schematics. The code starts up in Ultimax
mode and there are pull-up resistors connected to the relevant lines on
the gate array and the C64 cartridge port so that they read high when the
6525 I/O ports are configured as inputs. I think the 6525 registers are
mirrored across the whole $DF00-$DFFF range, as A7 does not feature in the
logic. I put my commented disassembly up on the web:

http://www.atkinsoft.com/magic_voice_startup_code.txt

The code allows a few educated guesses at what some of the control signals
do. PB6 (connected to pin 9 of the gate array) seems to be used to select
between Magic Voice internal ROM (when high) and external cartridge ROM
connected to the pass-through connector (when low). PC6 looks like it
might be used as the C64 GAME# signal, via inversion in the gate array. I
think the GAME# function on the gate array should be an output not an
input. The unmarked signals (pins 7, 8 and 9) all appear to be inputs.

Will try disassembling the code copied to $C000-$C5FFF tonight.

Richard


       Message was sent through the cbm-hackers mailing list

Reply | Threaded
Open this post in threaded view
|

Re: Magic Voice Schematics

Grósz Attila
Hi Richard,

Nice to see you back :-)

I still haven't given up on emulating the Magic Voice and the
Toshiba 6721A in general.

A while ago, I have successfully extracted (some of) the PARCOR parameters from the WAV samples you guys have extracted from a 364. I used this Japanese open source toolset:

http://kt-lab.ics.nitech.ac.jp/~tokuda/SPTK/

I have also sort of successfully resolved the interfacing between the
speech chip and the ROM program which I assume mostly analogous in the
two hardware. Based on the Toshiba data sheets available on Funet (BTW, where are the other pages?) I have noted the power up state of the speech chip:

Synth condition set
- filter stages : 10
- repeat available : yes
- frame length : 20 ms/frame
- bit rate : 96 bits/frame

This already gives a few hints about what sort of parameters we could expect...

Bearing in mind that Richard Wiggins was the one who designed the
Speak n Spell toy at TI and later headed Commodore's short liven Speech
Division, I assume these two US patents are also handy when trying to
figure out how those ROM parameters were fed to the lattice filter in
the LSI:

4209844
4970659

Use www.freepatentsonline.com to grab them. I did so, too, but it is
really _tough_ read considering I am not an engineer. Besided it is several dozen pages long. It does shed some light though and I hope it will get brighter with time :-)


Richard Atkinson wrote:

>I've had a go at hand-disassembling the first part of the Magic Voice
>code, using information from the schematics. The code starts up in Ultimax
>  
>
Great! I have attempted making a CRT image of it with Markus Brenner's
MCRT but I failed
miserably. Would someone else try that who is more literal with the C64
than I? :-)

>logic. I put my commented disassembly up on the web:
>http://www.atkinsoft.com/magic_voice_startup_code.txt
>  
>
On its way.... :-)

>The code allows a few educated guesses at what some of the control signals
>do. PB6 (connected to pin 9 of the gate array) seems to be used to select
>  
>
I do have some guesses at the C364 part maybe we could compare them once.

>think the GAME# function on the gate array should be an output not an
>input. The unmarked signals (pins 7, 8 and 9) all appear to be inputs.
>
>  
>
Is there more info available over the MOS8706R0 ? Data sheets perhaps?
Has someone access to
www.freetradezone.com ? They seem to have the T6721A as well, by the
way... but it is not free.

>Will try disassembling the code copied to $C000-$C5FFF tonight.
>  
>
Eager to hear about the results!

Regards,
Attila

       Message was sent through the cbm-hackers mailing list

Reply | Threaded
Open this post in threaded view
|

Re: Magic Voice Schematics

Grósz Attila
In reply to this post by Richard Atkinson
By the way.

Guess I have found that infamous "pretty please" register, too :-) If
you check the
(very old) C364 disassembly at my site:

http://yape.homeserver.hu/download/dassspk3.txt

you can see this piece of code at $8114:

. 8114 8d 20 fd STA $fd20 - called from $83AA
. 8117 09 80 ORA #$80
. 8119 8d 20 fd STA $fd20
. 811c 60 RTS

$FD20 is the speech command register on the C364 :-) So you indeed
had to ask him (her? ;-) ) twice.

I wonder if the MV has this too?

Cheers,
Attila





       Message was sent through the cbm-hackers mailing list

Reply | Threaded
Open this post in threaded view
|

Re: Magic Voice Schematics

Richard Atkinson
On Wed, 13 Apr 2005, [ISO-8859-2] Grósz Attila wrote:

> $FD20 is the speech command register on the C364 :-) So you indeed
> had to ask him (her? ;-) ) twice.
>
> I wonder if the MV has this too?
>
A similar thing happens in the Magic Voice ROM a lot. $DF81 is 6525 Port
Register B, and it is frequently loaded with 4 bits in D0-D3 for the
T6721A, with D4 low (PB4 is connected to T6721A WR#), then there is an ORA
#$10 command and then the register is loaded again.

This generates a positive edge on the T6721A WR# line for the chip to read
in the data.

Richard


       Message was sent through the cbm-hackers mailing list