| MAGIC VOICE | Firmware |
![]() |
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
Sehr ähnlich zum MV-Modul - Very similar to the MV-Module |
| Speicherbereiche - Memory locations |
| 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 | ||
| 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 |
| 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. |
| 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. |
| 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 | ||
| 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 | |
| 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 | 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 | 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 |