CPC Wiki Forum Die Amstrad-CPC-Community

Assembler Source Listing von RSX Befehl |SAY?

Begonnen von LambdaMikel · 30.06.2025 05:33 · Antworten: 19 · Aufrufe: 2958
#1
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!

https://youtu.be/XMrv2D5dri0
👍 0👎 0
#2
Freut mich, dass Dein Kanal wieder belebt wird.  :smiley027:
TFM of FutureSoft
http://www.FutureOS.de --> Das Betriebssystem FutureOS (Update: 30.05.2026)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> RSX ROM für LambdaSpeak (Update: 29.01.2025)
👍 0👎 0
#3
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
👍 0👎 0
#4
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 ;(
👍 0👎 0
#5
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.
👍 0👎 0
#6
die Alophones sollten doch die gleichen sein wie bei dem DK-Tronics oder irre ich micht da ?
👍 0👎 0
#7
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.
👍 0👎 0
#8
ist funny wie die das gemacht haben, verschiedene zeichen werden nicht wiedergegeben gesprochen 😉
stand der. dinge schicke ich dir per pn wenn das geht
👍 0👎 0
#9
Gute Arbeit Jungs! Wenn es da ein kommentiertes Listing gibt, dann bitte auch hier einstellen.  :smiley027:
TFM of FutureSoft
http://www.FutureOS.de --> Das Betriebssystem FutureOS (Update: 30.05.2026)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> RSX ROM für LambdaSpeak (Update: 29.01.2025)
👍 0👎 0
#10
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
👍 0👎 0
#11
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.

[member=5]TFM[/member] wenn wir den Code haben, können wir das ins LambdaSpeak ROM miteinbauen! |say für den SP0256-AL2 bzw. die SP0-Emu.
👍 0👎 0
#12
— LambdaMikel
Interessant sind die Regeln / der Algorithmus, der beliebigen englischen Text in Allophone umwandelt.

[member=5]TFM[/member] 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:
TFM of FutureSoft
http://www.FutureOS.de --> Das Betriebssystem FutureOS (Update: 30.05.2026)
http://futureos.cpc-live.com/files/LambdaSpeak_RSX_by_TFM.zip --> RSX ROM für LambdaSpeak (Update: 29.01.2025)
👍 0👎 0
#13
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 ;(
📎 ssa1_2.asm
📎 phonos.asm
👍 0👎 0
#14
— TFMDeutsche 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 😄
👍 0👎 0
#15
— BadCPCso crazy


super fortschritt, das wird schon!  :jubelaola:
👍 0👎 0
#16
— LambdaMikel
— TFMDeutsche 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 😄



Dazu müsste man die alos im sp umschreiben 😉
👍 0👎 0
#17
— BadCPC
— LambdaMikel
— TFMDeutsche 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 😄



Dazu müsste man die alos im sp umschreiben 😉


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

https://youtu.be/aTxufTKfrYk

"
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
"
👍 0👎 0
#18
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 😉
👍 0👎 0
#19
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...
👍 0👎 0
#20
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.
📎 CPCAI-85-08_Optimized.pdf
👍 0👎 0

Anmelden, um zu schreiben