Welcome, Guest. Please login or register.


Author Topic: Speakeasy, HDIGI, digitalization, allophones and read-aloud. (Read 17362 times)

Offline gflorez

  • EP addict
  • *
  • Posts: 3607
  • Country: es
    • Támogató Támogató
Re: Speakeasy, HDIGI, digitalization, allophones and read-aloud.
« Reply #30 on: 2016.June.12. 11:32:48 »
With the Z80 code probably it can be easier to get quality  software speech on the Enterprise or convert the SymbOS app to EP hardware.

Surprisingly the app is very little. I still had no time to study it.

Offline gflorez

  • EP addict
  • *
  • Posts: 3607
  • Country: es
    • Támogató Támogató
Re: Speakeasy, HDIGI, digitalization, allophones and read-aloud.
« Reply #31 on: 2016.June.12. 17:11:41 »
The app is on the SymbOS 3.0 beta we have. It loads and seems to work without hanging, but of course it doesn't sound.

I've been thinking about the other sound apps on SymbOS. Maybe someone can convert them to Dave use, if the code is at hand.

Offline gflorez

  • EP addict
  • *
  • Posts: 3607
  • Country: es
    • Támogató Támogató
Re: Speakeasy, HDIGI, digitalization, allophones and read-aloud.
« Reply #32 on: 2016.June.15. 20:00:57 »
The SymbOS Speech app is relocatable, but has 8Kb of fixed address code.

Inside that area there are the original Amsoft Speech routines.

Every time the program is executed, the Amsoft code is relocated to work, by means of a  table that holds all the fixed addresses.

Once relocated there are six entries, Pitch, Say, Speak, Left, Centre and Right, but I still haven't disassembled them.
« Last Edit: 2016.June.15. 20:57:31 by gflorez »

Offline gflorez

  • EP addict
  • *
  • Posts: 3607
  • Country: es
    • Támogató Támogató
Re: Speakeasy, HDIGI, digitalization, allophones and read-aloud.
« Reply #33 on: 2016.June.16. 00:42:53 »
This is the Amsoft program in hex, simply cut from the Speech app source. Also the bin code.

It is placed at 0000h but begins at 0100h like on the Enterprise, so there are 256 leading zeros.

The entry points used by Prodatron are at the middle, beginning and consecutive at 119Eh, Pitch=jp 11F1h, Say=jp 1275h, Speak=jp 124Ch, Left=jp 11D6h, Right=jp 11DFh and Center=jp 11E8h.

The second half of the code is occupied by a dictionary of rules to translate English words(Speak) to Allophones(Say).
« Last Edit: 2016.June.16. 09:59:29 by gflorez »

Offline gflorez

  • EP addict
  • *
  • Posts: 3607
  • Country: es
    • Támogató Támogató
Re: Speakeasy, HDIGI, digitalization, allophones and read-aloud.
« Reply #34 on: 2016.June.16. 12:23:56 »
The only two AY calls:

Code: [Select]
------------------------------------------------
012e 06f4      ld      b,0f4h
0130 ed79      out     (c),a
0132 06f6      ld      b,0f6h
0134 3e80      ld      a,80h
0136 ed79      out     (c),a
0138 af        xor     a
0139 ed79      out     (c),a
013b c9        ret    
------------------------------------------------
013c 06f6      ld      b,0f6h
013e 3ec0      ld      a,0c0h
0140 ed79      out     (c),a
0142 06f4      ld      b,0f4h
0144 ed59      out     (c),e
0146 06f6      ld      b,0f6h
0148 af        xor     a
0149 ed79      out     (c),a
014b c9        ret    
------------------------------------------------

And this is one of the routines which call them:

Code: [Select]
01e3 322001    ld      (0120h),a
01e6 221e01    ld      (011eh),hl
01e9 1e01      ld      e,01h
01eb cd3c01    call    013ch
01ee af        xor     a
01ef cd2e01    call    012eh
01f2 1e00      ld      e,00h
01f4 cd3c01    call    013ch
01f7 af        xor     a
01f8 cd2e01    call    012eh
01fb 1e07      ld      e,07h
01fd cd3c01    call    013ch
0200 3e3e      ld      a,3eh
0202 cd2e01    call    012eh
0205 3a2d01    ld      a,(012dh)
0208 5f        ld      e,a
0209 cd3c01    call    013ch
020c 3a2001    ld      a,(0120h)
020f 57        ld      d,a
0210 2a1e01    ld      hl,(011eh)
0213 1e3f      ld      e,3fh
0215 7e        ld      a,(hl)
0216 e60f      and     0fh
0218 cd2e01    call    012eh
021b 3a1c01    ld      a,(011ch)
021e 47        ld      b,a
021f 10fe      djnz    021fh
0221 7e        ld      a,(hl)
0222 cb2f      sra     a
0224 cb2f      sra     a
0226 cb2f      sra     a
0228 cb2f      sra     a
022a e60f      and     0fh
022c cd2e01    call    012eh
022f 3a1c01    ld      a,(011ch)
0232 47        ld      b,a
0233 10fe      djnz    0233h
0235 00        nop    
0236 00        nop    
0237 00        nop    
0238 23        inc     hl
0239 1d        dec     e
023a c21502    jp      nz,0215h
023d 15        dec     d
023e c21002    jp      nz,0210h
0241 c9        ret    


I suposse that is the only part of the code that we must modify to port the app to the Enterprise.

Sorry I can't go further as I don't know a word of sound chips....

Offline geco

  • EP addict
  • *
  • Posts: 7069
  • Country: hu
    • Támogató Támogató
Re: Speakeasy, HDIGI, digitalization, allophones and read-aloud.
« Reply #35 on: 2016.June.16. 14:33:10 »
As I see 013c is AY register select, 012e writes AY data to the previously selected register

Offline gflorez

  • EP addict
  • *
  • Posts: 3607
  • Country: es
    • Támogató Támogató
Re: Speakeasy, HDIGI, digitalization, allophones and read-aloud.
« Reply #36 on: 2016.June.16. 15:20:56 »
Do you think that the same or similar action can be done with Dave?

Offline geco

  • EP addict
  • *
  • Posts: 7069
  • Country: hu
    • Támogató Támogató
Re: Speakeasy, HDIGI, digitalization, allophones and read-aloud.
« Reply #37 on: 2016.June.16. 18:44:12 »
Unfortunately similar can not be done, or can, but most of the musics would not be so good.
In these routines we should store the values, and play them back in 50 hz interrupt by ay simulation routine, or here store the values, and play it back with ay emulation routine. About 100 additional bytes are needed.

Offline geco

  • EP addict
  • *
  • Posts: 7069
  • Country: hu
    • Támogató Támogató
Re: Speakeasy, HDIGI, digitalization, allophones and read-aloud.
« Reply #38 on: 2016.June.16. 18:50:33 »
Sorry, i mixed , i thought this code is from simamp. This code can be substituted for dave quite easily, it plays digi only

Offline geco

  • EP addict
  • *
  • Posts: 7069
  • Country: hu
    • Támogató Támogató
Re: Speakeasy, HDIGI, digitalization, allophones and read-aloud.
« Reply #39 on: 2016.June.16. 19:45:04 »
You can try to substitute the player code at 01e3h with the content of zip file, it should work, I hope the timing is also good.
Code at 012e, and 013c can be dropped, or leave as it is.

Offline geco

  • EP addict
  • *
  • Posts: 7069
  • Country: hu
    • Támogató Támogató
Re: Speakeasy, HDIGI, digitalization, allophones and read-aloud.
« Reply #40 on: 2016.June.16. 19:48:42 »
oops, please substitute one RRCA with one NOP, because at the 1st register write max volume value is 3ch, and at the second volume write is 1eh if RRCA remains :oops:

Offline gflorez

  • EP addict
  • *
  • Posts: 3607
  • Country: es
    • Támogató Támogató
Re: Speakeasy, HDIGI, digitalization, allophones and read-aloud.
« Reply #41 on: 2016.June.16. 22:13:02 »
Thanks!

Only that I put that routine as an example. There are others that call to 012e and 013c....

I don't have the disassembly here at home  so, more tomorrow.

Offline gflorez

  • EP addict
  • *
  • Posts: 3607
  • Country: es
    • Támogató Támogató
Re: Speakeasy, HDIGI, digitalization, allophones and read-aloud.
« Reply #42 on: 2016.June.17. 10:43:42 »
Only this other routine uses the AY calls:

Code: [Select]
0176 322001    ld      (0120h),a
0179 221e01    ld      (011eh),hl
017c 1e01      ld      e,01h
017e cd3c01    call    013ch
0181 af        xor     a
0182 cd2e01    call    012eh
0185 1e00      ld      e,00h
0187 cd3c01    call    013ch
018a af        xor     a
018b cd2e01    call    012eh
018e 1e07      ld      e,07h
0190 cd3c01    call    013ch
0193 3e3e      ld      a,3eh
0195 cd2e01    call    012eh
0198 3a2d01    ld      a,(012dh)
019b 5f        ld      e,a
019c cd3c01    call    013ch
019f 3a2001    ld      a,(0120h)
01a2 87        add     a,a
01a3 87        add     a,a
01a4 87        add     a,a
01a5 57        ld      d,a
01a6 cd0103    call    0301h
01a9 e63f      and     3fh
01ab 4f        ld      c,a
01ac 2a1e01    ld      hl,(011eh)
01af af        xor     a
01b0 0600      ld      b,00h
01b2 ed4a      adc     hl,bc
01b4 1e08      ld      e,08h
01b6 7e        ld      a,(hl)
01b7 00        nop    
01b8 00        nop    
01b9 00        nop    
01ba e60f      and     0fh
01bc cd2e01    call    012eh
01bf 3a1c01    ld      a,(011ch)
01c2 47        ld      b,a
01c3 10fe      djnz    01c3h
01c5 7e        ld      a,(hl)
01c6 cb2f      sra     a
01c8 cb2f      sra     a
01ca cb2f      sra     a
01cc cb2f      sra     a
01ce e60f      and     0fh
01d0 cd2e01    call    012eh
01d3 3a1c01    ld      a,(011ch)
01d6 47        ld      b,a
01d7 10fe      djnz    01d7h
01d9 23        inc     hl
01da 1d        dec     e
01db c2b601    jp      nz,01b6h
01de 15        dec     d
01df c2a601    jp      nz,01a6h
01e2 c9        ret    


Just injecting the two modified routines we can have Speech on the Enterprise SymbOS port...

The difficult task will be discover how to inject it on the App.

The app let the user change pitch of the voice, I assume this is done on the software before calling the AY routines.

But the user can also put the voice on any of the three channels(L, C and R). Do you think this will work with your modifications?

Offline geco

  • EP addict
  • *
  • Posts: 7069
  • Country: hu
    • Támogató Támogató
Re: Speakeasy, HDIGI, digitalization, allophones and read-aloud.
« Reply #43 on: 2016.June.17. 14:10:08 »
Port select is not working with my modification, i use D/A. The question is that what is important, the possibility to choose speaker direction (L C R) or the possibility to choose the volume port. I ask it because for the 1st we can use internal D/A, in this case the voice will be loud, for 2nd we are not able to use int D/A and the voice will be silent.

Offline geco

  • EP addict
  • *
  • Posts: 7069
  • Country: hu
    • Támogató Támogató
Re: Speakeasy, HDIGI, digitalization, allophones and read-aloud.
« Reply #44 on: 2016.June.17. 17:35:45 »
The package contains modified stuff for both routines, and sound output side selection.