Schneider / Amstrad CPC Forum

Amstrad / Schneider CPC => Programmierung => Topic started by: LambdaMikel on 30. June 2025, 05:33:27

Title: Assembler Source Listing von RSX Befehl |SAY?
Post by: LambdaMikel on 30. June 2025, 05:33:27
Hallo meine Lieben CPCler,

weiß jemand ob irgendwo das disassemblierte Sourcecode-Listing von der RSX-Erweiterung für den SSA1 Amstrad Sprach-Synthesizer liegt? Speziell würde mich der |SAY-Befehl interessieren. Der macht nämlich "Text 2 Speech" - Englisch nach SP0256-AL2 Allophone Codes für Sprachausgabe. Das könnte ich prima für dieses Projekt gebraucht, wo ich den LambdaSpeak 1.99 an den Microprofessor rangehängt habe. Leider habe ich natürlich nicht die RSX-Treibersoftware. Wäre toll wenn mir hier jemand helfen könnte!

[CPCEmulator]https://youtu.be/XMrv2D5dri0[/CPCEmulator]
Title: Re: Assembler Source Listing von RSX Befehl |SAY?
Post by: TFM on 30. June 2025, 14:46:17
Freut mich, dass Dein Kanal wieder belebt wird.  :smiley027:
Title: Re: Assembler Source Listing von RSX Befehl |SAY?
Post by: LambdaMikel on 30. June 2025, 16:37:45
Dankeschön, aber der Kanal ist nach wie vor geschlossen. Da werden nur kleine Clips hochgeladen; richtige Videos mache ich nicht mehr. Das ist Vergangenheit.

VG,
Michael
Title: Re: Assembler Source Listing von RSX Befehl |SAY?
Post by: BadCPC on 02. July 2025, 17:47:59
Hi Lambda, ich zerlege gerade die SSA1.BIN von der demodisc vom SSA1,

Ist schon recht lustig, haben relocable gemacht, das hab ich soweit weg;) und dann arbeiten die noch mit tablen ;(
Title: Re: Assembler Source Listing von RSX Befehl |SAY?
Post by: LambdaMikel on 03. July 2025, 05:09:59
Super! Ja mit den Tabellen kann ich mir vorstellen; man macht da üblicherweise "Regeln" für die Verarbeitung. Die sind sicher in den Tabellen kodiert. 

Relocatable war klar, da der Lader nach der Start-Addresse fragt.
Title: Re: Assembler Source Listing von RSX Befehl |SAY?
Post by: BadCPC on 03. July 2025, 12:02:12
die Alophones sollten doch die gleichen sein wie bei dem DK-Tronics oder irre ich micht da ?
Title: Re: Assembler Source Listing von RSX Befehl |SAY?
Post by: LambdaMikel on 07. July 2025, 00:16:28
Ja, genau. DK'tronics hatte ebenfalls text 2 speech. Das ROM wäre sonst auch ein Kandidate, wenn das mit SSA-1 zu schwierig ist.
Title: Re: Assembler Source Listing von RSX Befehl |SAY?
Post by: BadCPC on 07. July 2025, 09:35:29
ist funny wie die das gemacht haben, verschiedene zeichen werden nicht wiedergegeben gesprochen ;)
stand der. dinge schicke ich dir per pn wenn das geht
Title: Re: Assembler Source Listing von RSX Befehl |SAY?
Post by: TFM on 07. July 2025, 16:07:17
Gute Arbeit Jungs! Wenn es da ein kommentiertes Listing gibt, dann bitte auch hier einstellen.  :smiley027:
Title: Re: Assembler Source Listing von RSX Befehl |SAY?
Post by: BadCPC on 08. July 2025, 00:14:08
Hier ein paar phonos
numbers_
label_9CB8 db &2B,&13,&0E,&35,&80 ; 0 Zero   
label_9CBD db &2E,&0F,&8B ; 1 One
label_9CC0 db &0D,&9F ; 2 Two
label_9CC2 db &1D,&33,&93 ; 3 Three 
label_9CC4 db &28,&BA ; 4 four
label_9CC7 db &28,&06,&A3 ; 5 five
label_9CCA db &37,&06,&2A,&B7 ; 6 Six     
label_9CCE db &37,&06,&23,&33,&8B ; 7 seven
label_9CD3 db &14,&91 ; 8 eight
label_9CD5 db &0B,&06,&8B ; 9 nine     
label_9CD8 db &0D,&07,&8B ; 10 ten           
label_9CDB db &13,&2D,&07,&23,&07,&8B ; 11 eleven               
label_9CE1 db &0D,&2E,&07,&2D,&A3 ; 12 twelve       
label_9CE6 db &1D,&33,&11,&13,&8B ; 13 thirdteen               
label_9CEB db &28,&3A,&11,&13,&8B ; 14 fourteen       
label_9CF0 db &28,&0C,&28,&11,&13,&8B ; 15 fiveteen               
label_9CF6 db &37,&0C,&2A,&37,&11,&13,&8B ; 16 sixteen             
label_9CFD  db &37,&07,&23,&07,&0B,&11,&13,&8B ; 17 seventeen               
label_9D05 db &14,&11,&13,&8B ; 18 eighteen
label_9D09 db &0B,&06,&0B,&11,&13,&8B ; 19 nineteen 
label_9D0F db &0D,&2E,&07,&0B,&11,&93 ; 2O twenty                 
label_9D15 db &1D,&34,&11,&93 ; 30 thirty
label_9D19 db &28,&28,&3A,&11,&93 ; 40 fourty
label_9D1E db &28,&28,&0C,&28,&11,&93 ; 50 fifty
label_9D24 db &37,&37,&0C,&2A,&37,&11,&93 ; 60 sixty
label_9D2B db &37,&37,&07,&23,&07,&0B,&11,&93 ; 70 seventy           
label_9D33 db &14,&11,&93 ; 80 eighty
label_9D36 db &38,&06,&0B,&11,&93 ; 90 ninty               
label_9D3B db &10,&0C,&2D,&13,&18,&8B ; millions
label_9D41 db &1D,&20,&2B,&1A,&0B,&95 ; tausend
label_9D47 db &1D,&0F,&0B,&21,&27,&07,&95 ; hundrets
;---------------------------------------------------------------------
; & % * /\ | @ ^ + - = < > # $
label_9D4E db &1A,&0B,&A1 ; (&) hexsymbol
label_9D51 db &09,&33,&37,&37,&06,&0B,&8D ; (%) Prozent
label_9D58 db &0D,&06,&10,&B7 ; (*) asterix
label_9D5C db &21,&0C,&23,&06,&15,&07,&15,&3F,&86 ; (/\) divider           
label_9D65 db &3F,&BB ; (|) tile             
label_9D67 db &1A,&8D ; (@) at             
label_9D69 db &09,&20,&B3 ; (^) sqaure   
label_9D6C db &09,&2D,&0F,&B7 ; (+) plus
label_9D70 db &10,&06,&0B,&0F,&B7 ; (-) minus
label_9D75 db &13,&07,&2D,&B7 ; (=) eval                     
label_9D79 db &2D,&07,&37,&37,&12,&1A,&8B ; (<) lesser
label_9D80 db &3D,&27,&14,&11,&33,&12,&1A,&8B ; (>) greater
label_9D88 db &21,&17,&3E,&3B,&B7            ; (space) not returned
label_9D8D db &09,&20,&0B,&15,&B7 ; (!) not returned
label_9D92 db &09,&17,&0C,&0B,&8D ; (") not returned
label_9D97 db &1B,&1A,&A5 ; (#) hash
label_9D9A db &37,&37,&0D,&27,&0C,&AC ; (§) String     

kannst du auch mit basic ausgeben lassen

so als bespielt
10 mode 2
20 read 2
30 if a=&FF then end
40 out &FBEE,a: ' SSA1 oder &FBFE für dks
50 goto 20
60 data &3D,&26,&17,&11,&33,&12,&1A,&8B,&FF


arbeite grad an der routine um wörter wieder zu geben
Title: Re: Assembler Source Listing von RSX Befehl |SAY?
Post by: LambdaMikel on 10. July 2025, 08:38:29
Ja, genau. Die "festprogrammierten" Wörte sind relativ klar. Die findest Du auch im SP0256-AL2-Manual; evtl. einfach im ROM auf diese Weise zu finden.

Interessant sind die Regeln / der Algorithmus, der beliebigen englischen Text in Allophone umwandelt.

@TFM wenn wir den Code haben, können wir das ins LambdaSpeak ROM miteinbauen! |say für den SP0256-AL2 bzw. die SP0-Emu.
Title: Re: Assembler Source Listing von RSX Befehl |SAY?
Post by: TFM on 10. July 2025, 12:18:36
Quote from: LambdaMikel on 10. July 2025, 08:38:29Interessant sind die Regeln / der Algorithmus, der beliebigen englischen Text in Allophone umwandelt.

@TFM wenn wir den Code haben, können wir das ins LambdaSpeak ROM miteinbauen! |say für den SP0256-AL2 bzw. die SP0-Emu.

Ja, das mache ich gerne. Dann wäre es auch wünschenswert Deutsche Sprachausgabe zu haben  :smiley027:
Title: Re: Assembler Source Listing von RSX Befehl |SAY?
Post by: BadCPC on 10. July 2025, 13:48:26
Ich schreib mal was, hehe,

im ssa1 rsx werden leider nicht alle symbole ausgegeben ;)
möglich chars ;check for  & % * / | @ ^ + - = >
und checkt_table wenn du das schon bei der von mir drin hast ;)

ein grund dafür ist, das der say command verschieden chars zu kontrolle nutz, ein |say,"'1'2" gib one two zurück

if lenght = 1 load byte as single_phone else load byte as longphones;

on numbers and count numbers
if byte is &30 to &39 load numbers
load from table numbers


; if lower char
if byte > &61 or byte < &7B convert them to by and &DF  to upper_chars &41 - &5B

erschwerend sind die verückten addressen, teilweise aussßerhalbe der alphone table ;(

BSP. &9250 für alphabet als würde da wa fehlen, fehlt aber nix , der berechnet nur dähmlich.  Da gibts sogar &9244 im der laufzeit, debuggen macht ja so spass ;)

phonos
ssa1 der rsx teil
btw. im anhang die phonos soweit ich sie hab vom SSA1 RSX das ist
so crazy

Ab &A309 ist der rumtime varible block hab den zur Controlle  auf defs gesetzt , geht damit


Zu |echo der ist ähnlich wie der von dk-tronics aber ein bissle buggy ;(



Title: Re: Assembler Source Listing von RSX Befehl |SAY?
Post by: LambdaMikel on 11. July 2025, 17:04:58
Quote from: TFM on 10. July 2025, 12:18:36Deutsche Sprachausgabe zu haben  :smiley027:

Deutsche Sprachausgabe macht das aber nicht - nur English :) Falls Du Deutsch willst, kannst Du das BASIC-Programm das text 2 speech für Deutsch macht in Z80 übersetzen :D
Title: Re: Assembler Source Listing von RSX Befehl |SAY?
Post by: LambdaMikel on 11. July 2025, 17:09:14
Quote from: BadCPC on 10. July 2025, 13:48:26so crazy

super fortschritt, das wird schon!  :jubelaola:
Title: Re: Assembler Source Listing von RSX Befehl |SAY?
Post by: BadCPC on 11. July 2025, 17:17:07
Quote from: LambdaMikel on 11. July 2025, 17:04:58
Quote from: TFM on 10. July 2025, 12:18:36Deutsche Sprachausgabe zu haben  :smiley027:

Deutsche Sprachausgabe macht das aber nicht - nur English :) Falls Du Deutsch willst, kannst Du das BASIC-Programm das text 2 speech für Deutsch macht in Z80 übersetzen :D


Dazu müsste man die alos im sp umschreiben ;)
Title: Re: Assembler Source Listing von RSX Befehl |SAY?
Post by: LambdaMikel on 13. July 2025, 06:55:46
Quote from: BadCPC on 11. July 2025, 17:17:07
Quote from: LambdaMikel on 11. July 2025, 17:04:58
Quote from: TFM on 10. July 2025, 12:18:36Deutsche Sprachausgabe zu haben  :smiley027:

Deutsche Sprachausgabe macht das aber nicht - nur English :) Falls Du Deutsch willst, kannst Du das BASIC-Programm das text 2 speech für Deutsch macht in Z80 übersetzen :D


Dazu müsste man die alos im sp umschreiben ;)

Ja, aber noch mehr... den Regelbasierten Übersetzer ändern.
Mehr Infos hier:

[CPCEmulator]https://youtu.be/aTxufTKfrYk[/CPCEmulator]

"
Ich habe das Buch "BASIC Computer Spiele" (eine deutsche Version des Klassikers "Basic Computer Games") ca. 1985 aus der Bücherhalle in Hamburg-Niendorf in den Sommerferien ausgeliehen, in meinen CPC 464 eingetippt, und dabei für Locomotive BASIC angepasst und etwas erweitert (Sound-Effekte etc.) Zudem besaß ich den Sprachsynthesizer von DK'tronics (http://www.cpcwiki.eu/index.php/Dk%27...) seit April 1985, und die "CPC Schneider International"-Zeitschrift hatte in ihrer August 1985-Ausgabe eine Treibersoftware (ebenfalls in BASIC) für den DK'tronics abgedruckt: "Der CPC spricht deutsch". Was lag also näher, als dem abgetippten (deutschsprachigem) BASIC-Eliza eine Stimme zu geben? Ich kombinierte also die beiden BASIC-Programme, und das Ergebnis war.. nun ja... bescheiden. Ich erinnere mich noch, wie meine Freunde mich auslachten, da die Sprachsynthese auf dem Commodore 64 (via "SAM") so viel besser war! Aber immerhin, Eliza sprach nun Deutsch, und es war eines der wenigen Programme für den CPC, die den DK'tronics Sprachsynthesizer überhaupt nutzten. Und es war ein gutes DIY Sommer-Projekt!

Nun, 32 Jahr später, habe ich mit "LambdaSpeak" einen modernen "next generation" Sprach-Synthesizer für den CPC entwickelt, der zudem einen Kompatibilitäts-Modus hat; er emuliert in diesem Modus den Amstrad / Schneider SSA-1 Sprachsynthesizer (http://www.cpcwiki.eu/index.php/Amstr...) Obwohl DK'tronics und SSA-1 den gleichen Sprach-Chip SPO256 verwenden, gibt es doch kleinere Unterschiede (IO-Ports und Protokoll). Die Phoneme sind allerdings identisch, und das ist das Wichtigste. Mit 2 minimalen Änderungen an meinem alten Eliza-Programm wurden der DK'tronics-Treiber im Eliza dann SSA-1 kompatibel - und das Ergebnis ist durchaus verständliches Deutsch! Ich war überrascht. Sehr viel besser und klarer als mit dem DK'tronics.

Hier passiert also folgendes:

    der DK'tronics-BASIC-Treiber im Eliza-Programm erzeugt "Phoneme" für Deutsch, die für den DK'tronics-Sprachsynthesizer (bzw. SPO256) gedacht sind. Diese sind identisch mit den SSA-1-Phonemen, da dieser ebenfalls den SPO256 verwendet.
    LambdaSpeak hat einen SSA-1-Emulationsmodus, in dem die SPO256-Phoneme "in Echtzeit" über eine Lookup-Table in Emic 2 / DecTalk Phoneme umgewandet werden (der Emic 2-Sprachsynthesizer, auf dem LambdaSpeak basiert, ist DecTalk / Epson-basiert). Auch diese DecTalk-Phoneme sind eigentlich für Englisch gedacht!


Das Ergebnis kann sich hören lassen. Allerdings ist der "native mode" des LambdaSpeak doch wesentlich besser:
   • LambdaSpeak meets BASIC Eliza on the CPC 464 
Hier wird der Emic 2 direkt im "Epson-Modus" angesprochen.
Transcript
"
Title: Re: Assembler Source Listing von RSX Befehl |SAY?
Post by: BadCPC on 13. July 2025, 19:06:08
das liest sich ja klasse, aber ich denke es geht dir darum wie beim ssa1 der rsx say das macht, natürlich mit lookup tabellen ;) abhängig davon wo Vokale Selbstlaute stehen benutzt er verschiedene Phonos , kürze das gerne ab ;), ssa1 rsx benutzt dazu cpi an verschiedene adressen Lambda wird das schon gesehen haben ;) so mal weiter machen damit wir mal endlich source mit beschreibung bekommen ;)
Title: Re: Assembler Source Listing von RSX Befehl |SAY?
Post by: LambdaMikel on 13. July 2025, 21:50:33
Genau, ich wollte nur einen Hinweis auf das "Deutsch-nach-Phoneme"-Programm aus der CPC International von damals geben; das macht das für Deutsch. Ist also schon ein bißchen anders als einfach nur die Phoneme für deutsche Wörter zu ändern. Aussprache-Regeln und so...
Title: Re: Assembler Source Listing von RSX Befehl |SAY?
Post by: LambdaMikel on 13. July 2025, 21:55:36
Ich hänge es mal an... s. S. 56. Das wäre halt auch cool, wenn wir das mal als RSX in Assembler machen würden. Aber wie gesagt, ein größeres Projekt. Und zudem ist die Eignung für Deutsch trotzdem etwas eingeschränkt.