MAGIC VOICE Firmware

CBM Home Allgemeines
General
Einführung
Introduction
Anschluss
Connection
Anwenden des Moduls
Using the Module
Vokabular
Vocabulary
Tips & Tricks
Tips & Tricks
Ergänzendes
Additional stuff
Demos
Demos
Spiele
Games
Zeitschriften
Magazines
Sprach Downloads
Speech Downloads
Lexikon
Lexicon
Internes
Internal
Hardware
Hardware
Firmware
Firmware
Sprachdaten
Speechdata
Bit-Format
Bit allocation
De-/Codierung
De-/Coding
Nützliches und mehr
Utilities and more
Speech Playtool Magic Game Cart Magic Talkie Magic Voice NT Ersatzteile & Reparatur
Spares & Repair


Die Betriebssoftware des Magic Voice. The firmware of the Magic Voice.


Disassembliertes ROM - ROM disassembly

Das ROM im Magic Voice beinhaltet die Betriebssoftware und die Sprachdaten für die enthaltenen 235 Worte. The ROM of the Magic Voice contains the firmware and the speechdata for the 235 built-in words.


Device Binary Disassembly
Firmware of the Commodore Magic Voice cartridge (EPROM) Original_MVSM_251476.bin (16 KB) Disassembled_ROM_of_the_Magic_Voice_Speech_Module.zip
.zip 51 KB /.txt 294 KB as of 3/Feb/2013
Speech ROM of the Commodore V364 Original_V364_spk3cc4.bin (16 KB) Disassembled ROM of the V364 External Link
Sehr ähnlich zum MV-Modul - Very similar to the MV-Module


Speicherbereiche - Memory locations

Belegte Speicherbereiche - Used Memory Locations

$A000-$A800 Sprachtreiber Routinen
$C000-$C3FF Assembler Interface - Service Routinen (active in all memory map modes)
$B240-$BFFF Sprachdaten - Speech Data
$E000-$FF35 Sprachdaten - Speech Data
Startupcode:
$FF36-$FFD2 Code kopiert nach $0200, Startup - Code copied to $0200, Startup
$FFD3-$FFF9 Start nach Reset - start after Reset
$FFFA-$FFFF Vektoren - vectors


Zero Page: During the voice synthesis process (including NMI processing after speech is initiated)

Adresse Original Verwendung MVM Verwendung Bemerkung
$14 x $BD, Speech Speed see also $C3DC and $A3E7
$15 x $BE x
$22 x $C3CE or #$40 x
$23 x $C3CF or #$B2 x
$9B Parity of Byte Output to Tape
$9C Flag: Byte received from Tape
$A7 RS232 temporary for received Bit / Tape temporary LSB
$A8 RS232 Input Bit count / Tape temporary MSB
$BD RS232 Output Parity / Tape Byte temporary LSB der Wortnummer A-Reg
$BE Tape Input/Output Block count MSB der Wortnummer X-Reg, Sonderfall $BE = #$30 -> RTS (SAYIT)
$FB Free ZeroPage space for User Programs LSB Sprachdatentabelle SAYIT Init: #$40 oder wenn $BE<>ACC dann aus $C3CE
$FC Free ZeroPage space for User Programs MSB Sprachdatentabelle SAYIT Init: #$B2 oder wenn $BE<>ACC dann aus $C3CF
$FD Free ZeroPage space for User Programs


Erweiterte Zeropage - Extended Zeropage:

Adresse Original Verwendung MVM Verwendung Bemerkung
$0300-$030B 12 bytes copied from $C105 (Eprom $0F67) by Startup routine
8B E3 83 A4 79 C2 58 C3 11 C1 8E C3
$0300 Vector: BASIC Error Message ?
$0301 $E38B $E38B unchanged
$0302 Vector: BASIC Input Line and Decode ?
$0303 $A483 $A483 unchanged
$0304 Vector: BASIC Tokenise Routine ?
$0305 $A57C $C279
$0306 Vector: BASIC LIST Routine ?
$0307 $A71A $C358
$0308 Vector: BASIC Character dispatch Routine ?
$0309 $A7E4 $C111
$030A Vector: BASIC Token evaluation ?
$030B $AE86 $C38E
$0318 Vector: Hardware NMI Interrupt Address NMI vector for voice synthesis compared with #$47 by $C20E routine
$0319 $FE47 $C047 compared with #$C0 by SPSTAT routine, $0339 copied in by SRESET routine if speech module not ready, copied to $0339 by $C20E routine
$0338 Unused original NMI vector relocated original NMI vector
$0339 Unused original NMI vector relocated original NMI vector
copied to $0319 by SRESET routine, $0319 copied in by $C20E routine


The NMI vector needed for voice synthesis is planted in locations $0318 and $0319 at the start of the synthesis operation. The original vector is relocated to locations $0338 and $0339. This original value is restored when synthesis is complete.


RAM Adressen - RAM locations

Adresse Original Verwendung MVM Verwendung Bemerkung
$C3C6
$C3CE VOC-Sprachdatentabelle #$00 stored by startup routine, LSB stored by SETTAB routine
$C3CF VOC-Sprachdatentabelle #$00 stored by startup routine, MSB stored by SETTAB routine
$C3D0 Decompression? Subroutine at A3AF
$C3D1 Decompression?
$C3D2
$C3D3
$C3D4
$C3D5 Pointer LSB $003F-0040 Current DATA Line number
$C3D6 Pointer MSB
$C3D7
$C3D8
$C3D9
$C3DA
$C3DB Counting Semaphore Bit 0..5 Counter, Bit6, Bit7 ... Flags?
$C3DC Speech Speed #$04 stored by startup routine
$C3DD Store Akku after $A185 Routine
$C3DE Store Akku after $A185 Routine
$C3DF Storage for 6525 Control Register $DF86 control register stored by $C0AA routine
$C3E0
$C3E1 Storage for 6510 On-Chip Port $01 port register stored by $C0AA routine
$C3E2
$C3E3 #$00 after INIT_VOICE_SYNTHESIZER
Storage of 12 Bytes (96 Bit) at $C3E4 , each got from Sub at $A185 , see code at $A2C7
$C3E4
$C3EF
Storage of 1+15 (16) Bytes at $C3F0 , at Subroutine $A21E
$C3F0
$C3FE
$C3FF


Befehle des Sprachsynthesizers - Commands of the Voice Synthesizer

Die folgende Tabelle stellt eine Übersicht der Befehle des T6721 dar. The following table gives an overview about the commands of the T6721.


1 Nibble Befehle - 1 Nibble Instructions

Name Code Beschreibung Description
$ D3 D2 D1 D0 Details siehe Datenblatt See Datasheet for details
NOP 0 0 0 0 0 NO OPERATION
- Keine Funktion, jedoch wird dabei der "ROM READ MODE" (ROM Lesemodus) verlassen.
NO OPERATION
- No Operation, "ROM READ MODE" is, however, released by this command.
STRT 1 0 0 0 1 START
- Dieser Befehl startet die Sprachausgabe.
- Setzt den Status "ROM DATA ERROR" zurück
START
- This command starts the speech.
- Releases the status "ROM DATA ERROR".
STOP 2 0 0 1 0 STOP
- Dieser Befehl bricht die Sprachausgabe ab und löst einen Reset des Synthesizers aus.
- Die Synthesizer-Einstellungen, Sprechgeschwindigkeit und APD Status bleiben erhalten.
STOP
- This command forces the speech to stop and resets the synthesizing system.
- Synthesizing conditions, speech length and APD status are held by this command.
SPDN 9 1 0 0 1 SYSTEM POWER DOWN
- Stoppt den Taktgenerator des T6721A und reduziert den Stromverbrauch des gesamten Synthesizers.
-
-
SYSTEM POWER DOWN
- Stops oscillation of T6721A and reduces power to the entire synthesizing system.
- Places Audio Power Down output APD at "H" level.
- Places /ACL at "L" level and fixes the synthesizing system at the reset status. (Synthesizing conditions and speech length are also cleared, accordingly and reset is required when power is ON.)
SAGN B 1 0 1 1 SYSTEM ASGIN
- abc
-
-
-
SYSTEM ASGIN
- Releases SYSTEM POWER DOWN status.
- After the release, there is the power on transient status for about average 30ms. /BSY is generated during this transient status.
- APD is kept at "H" level. Therefore, prior to starting speech, it is necessary to make AAGN shown below.
- It is necessary to take a time of more than 30ms before SAGN is made after SPDN.
APDN A 1 0 1 0 AUDIO POWER DOWN
- Setzt den Audio Power Down Ausgang APD auf "H" Pegel.
AUDIO POWER DOWN
- Places the Audio Power Down output APD at "H" level.
AAGN 4 0 1 0 0 AUDIO ASGIN
- abc
AUDIO ASGIN
- Places APD at "L" level.
RRDM 8 1 0 0 0 ROM READ MODE
- abc
-
-
-
ROM READ MODE
- This is a command for setting a mode to read data in the voice data ROM. Under the normal mode other than this mode, the status is read by /RD.
- This mode is released when another command is written.
- The low order 4 bits of 8 bits of ROM data corresponding to ROM address that have been set by ADLD are taken into T6721A by this command. These 4 bits are output to the bus lines D0-D3 by next /RD and at the same time, the high order 4 bits are taken into T6721A. Address is advanced in order by the succeeding read and data is read every 4 bits.
- This function makes it possible to take other data than voice analysis data into the voice data ROM and use it (particularly effective for Phrase start address labelling).
Redundant C-F 1 1 X X Ungenutzte Befehle
- Es gibt 4 ungenutzte Codes. Obwohl sie keine Wirkung haben, wird der Status "COMMAND ERROR" auf "H" gesetzt.
Redundant Commands
- 4 types of redundant codes are available. Although there is no effect even when these redundant codes are read, the status "COMMAND ERROR" becomes "H" level.


APDN and AAGN are available during speech, so suited to the speaker ON/OFF key (SW) by use of the touch key provided to CPU.


2 Nibble Befehle - 2 Nibble Instructions

Parameter die mit SPLD, CNDT 1 und CNDT 2 eingestellt werden, bleiben erhalten bis sie zurückgesetzt oder durch SPDN gelöscht werden. Parameters that are set with SPLD, CNDT 1 and CNDT 2 are kept till they are reset or cleared by SPDN.


Name Code Beschreibung Description
$ D3 D2 D1 D0 Details siehe Datenblatt See Datasheet for details
SPLD 5 0 1 0 1 SPEED LOAD
- abc
SPEED LOAD
- Speed of Speech (slow, fast) is set by this command and 1 nibble (4 bits) data that successively writes.
X X X X - ABC - XYZ
CNDT 1 6 0 1 1 0 CONDITION 1
- abc
CONDITION 1
- Type of sound source and availability of loss effect calculation are set by this command and succeeding 1 nibble data.
X X 0 0 - D0, D1 muss "0" sein. - D0, D1 must be "0"
CNDT 2 7 0 1 1 1 CONDITION 2
- abc
CONDITION 2
- Similar to CNDT 1, this command sets bit/frame, frame length, availability of repeat (bit) and number of filter stages.
X X X X - ABC - XYZ


6 Nibble Befehle - 6 Nibble Instructions

Name Code Beschreibung Description
$ D3 D2 D1 D0 Details siehe Datenblatt See Datasheet for details
ADLD 3 0 0 1 1 ADDRESS LOAD
- abc
ADDRESS LOAD
- The start adress of the voice data ROM corresponding to the phrase to be spoken or to the data in the voie data ROM to be read is set by this command and succeeding 5 nibbles (20 bits) data.
X3 X2 X1 X0 - ABC - XYZ
X7 X6 X5 X4 - ABC - XYZ
X11 X10 X9 X8 - ABC - XYZ
X15 X14 X13 X12 - ABC - XYZ
X19 X18 X17 X16 - ABC - XYZ


Parameter des Sprachsynthesizers - Parameters of the Voice Synthesizer

Die einstellbaren Parameter des Sprachsynthesizers sind in der folgenden Tabelle wiedergegeben. The adjustable parameters (synthesizing conditions) of the speech synthesizer are shown in the following table.


Parameter - Option Einstellung - Condition
SPLD SP Magnification of speech length 10 Stages: 0.7 , 0.8 , 0.9 , 1.0 (+) , 1.1 , 1.2 , 1.3 , 1.4 , 1.5 , 1.55
CNDT 1 EXP Type of sound source shape Pitch Triangle Wave
LOSS Loss effect calculation None Available
CNDT 2 BR Bits/Frame 48 96 (+)
FR Frame length 20 ms/frame (+) 10 ms/frame
REP Repeat Available (+) None
OD Number of filter stages 10 (+) 8

(+) = After power up

Parameter:

SPLD - $5 - (Speed Load)

SPLD Code Condition
Bit: $ D3 D2 D1 D0 Details siehe Datenblatt
0 0 0 0 0 1.0 (redundant)
Speech speed 1 0 0 0 1 0.7
2 0 0 1 0 0.8
3 0 0 1 1 0.9
4 0 1 0 0 1.0 (standard)
5 0 1 0 1 1.1
6 0 1 1 0 1.2
7 0 1 1 1 1.3
8 1 0 0 0 1.4
9 1 0 0 1 1.5
A 1 0 1 0 1.55
B-F 1 x x x 1.0 (redundant)
 
Beispiel - Example 4 0 1 0 0 $4, Sets standard speed 1.0


CNDT 1 - $6 - (Condition 1)

CNDT 1 Code Condition
Bit: D3 D2 D1 D0 Details siehe Datenblatt
Loss effect calculation x 0 0 0 None
x 1 0 0 Available
Sound source shape 0 x 0 0 Pitch
1 x 0 0 Triangle wave
 
Beispiel - Example 0 1 0 0 $4, Loss effect calculation is available and Sound source shape is Pitch


CNDT 2 - $7 - (Condition 2)

CNDT 2 Code Condition
Bit: D3 D2 D1 D0 Details siehe Datenblatt
Number of filter stages x x x 0 10
x x x 1 8
Repeat x x 0 x Available
x x 1 x None
Frame length x 0 x x 20 ms/frame
x 1 x x 10 ms/frame
Bits/Frame 0 x x x 48 bits/frame
1 x x x 96 bits/frame
 
Beispiel - Example 1 0 1 0 $A, 10 Filter stages, Repeat not available, 20 ms/frame, 96 bits/frame


RESET:
STOP 0010 (Speech Stop and Reset)

LDA #$22
STA $DF81  Port Register B set to %00100010 (keep PB5 high and PB6 low)
ORA #$10   Set /WR (Write to T6721A chip)
STA $DF81  Port Register B set to %00110010 (keep PB5 high and PB6 low)


Nach oben zum Menü - Go top to menu
Copyright © 2006-2013 Stefan Uhlmann - Aktualisiert: 3. Februar 2013 - Valid HTML 4.01!