The Unix Heritage Society mailing list
 help / color / mirror / Atom feed
* [TUHS] speak.c, or sometimes the bits are under your nose
@ 2011-12-08 23:08 Warren Toomey
  2011-12-09 22:43 ` Al Kossow
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Warren Toomey @ 2011-12-08 23:08 UTC (permalink / raw)


Hi all, in the past few days I've been getting some
interesting e-mails from a new TUHS member,
Jonathan Gevaryahu. He has been searching for some
lost software, and his story of how he found it
is a good reminder to check through all the zeroes
and ones on the digital media at hand. With his
permission, I reproduce the e-mails below.

Cheers,
	Warren


Hi, I'm Jonathan Gevaryahu, one of the developers of MESS but also a
speech synthesis history buff. I've been trying to find a copy of the
old unix 'speak' command source code and rule tables that M. D. Mcilroy
wrote back in 1974ish, but the TUHS archives only have the man pages
for it, and not the actual program or its tables.

As for the "why?" of this, its an important piece of history, and the
phoneme set used on the Federal Screw Works "VOTRAX" Model VS-4 unit
which was used with 'speak' at Bell Labs is compatible with the later
Votrax Model VS-6 unit at CHM, and also with the Votrax "SC-01" chip
used in some arcade/video games, several computer peripherals, and on
the "Type 'N' Talk" and "Personal Speech System" products. So actually
running the old code and having it speak should be quite doable, if we
can recover enough of it to be useful.

[ Jonathan assumed that the 'speak' source code had been lost. ]

I even asked Doug McIlroy about it a few years ago and he didn't have
a copy, and I had assumed it was just plain lost... Until today.
I was poking around in random TUHS files (after reading about
the v1 unix restoration project) and noticed that the size of
recovered files from the ritchie v6 tapes in the .tar.gz files
is actually significantly smaller than the tapes themselves. I
assumed there had to be some other data there, possibly corrupt or
fragmentary, and got down to peeking at the file contents themselves.
There were some mentions of speak.m and .c and .v, but finally, in
http://minnie.tuhs.org/Archive/PDP-11/Distributions/research/Dennis_v6/v6doc.gz
I found the remains of the speak program. See
http://pastebin.com/FdvRYM2T for what I've managed to recover so far
(actually since i pasted that I recovered a good deal more of it, but
a lot is out of order and bits are missing) The file is fragmentary as
far as I can see, and is only speak.c (the .m file containing the rules
I haven't found yet, but since Doug has a scanned copy of the paper
describing speak on his website, hopefully I can just regenerate the
rule tables if needed), but it is there! Hopefully speak.m or .v are
still waiting to be found on that or one of the other tape images.

Also there are other things on that tape like the chess program, and
tic tac toe, which may not exist elsewhere. (Though, for these two I
honestly haven't checked)

Also, in the last 5 minutes I found a chunk of what I'm pretty sure is
either speak.m or speak.v, so there's more than just the .c file there.

Further progress attached of recovering speak from deleted disk pack
sectors: I have all of speak.c in order except for one 512-byte sector,
which was overwritten at some point, in the phoneme table. (This has to
be the least "damaging" sector of the entire program. lucky!) I also
have a good chunk (maybe 50-60%) of what may be a mix of speak.m and
speak.v, both out of order. I did not yet find
a copy of 'speakm', the rule displayer program for speak.m/.v. There is
a program, located after speak.c on the disk image, which looks like it
would convert numbers and months to their full speakable names.

In addition, either slightly more or slightly less of the files may be intact
on the
http://minnie.tuhs.org/Archive/PDP-11/Distributions/research/Ken_Wellsch_v6/v6.tape.gz
image, which appears to be originally an exact dd-copy of the dennis_v6
disk packs.

Ok, here's the 'repaired' speak.c file, with the missing entries of the
table filled in (this was IMMENSELY helped by the fact that speak.o, the
compiled object file, was also on the disk pack and appears to be fully
intact including the table; the ruleset files are fragmentary so far.)
-------------- next part --------------
A non-text attachment was scrubbed...
Name: speak.fixed.c
Type: text/x-csrc
Size: 14336 bytes
Desc: not available
URL: <http://minnie.tuhs.org/pipermail/tuhs/attachments/20111209/ac749b67/attachment.c>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: speak.o
Type: application/x-object
Size: 2560 bytes
Desc: not available
URL: <http://minnie.tuhs.org/pipermail/tuhs/attachments/20111209/ac749b67/attachment.o>


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [TUHS] speak.c, or sometimes the bits are under your nose
  2011-12-08 23:08 [TUHS] speak.c, or sometimes the bits are under your nose Warren Toomey
@ 2011-12-09 22:43 ` Al Kossow
  2011-12-09 23:17   ` Al Kossow
  2011-12-11  2:11   ` Jonathan Gevaryahu
  2011-12-11  0:34 ` Jonathan Gevaryahu
  2011-12-12  8:13 ` Jonathan Gevaryahu
  2 siblings, 2 replies; 10+ messages in thread
From: Al Kossow @ 2011-12-09 22:43 UTC (permalink / raw)


I dug through some of my old tape images and found a modified version
for another synthesizer

I've put the tarball under
http://bitsavers.org/bits/ATT/unix/sw_oldUnix_tar

the files are under
./uug/4/UK/qmc/s2





^ permalink raw reply	[flat|nested] 10+ messages in thread

* [TUHS] speak.c, or sometimes the bits are under your nose
  2011-12-09 22:43 ` Al Kossow
@ 2011-12-09 23:17   ` Al Kossow
  2011-12-11  2:11   ` Jonathan Gevaryahu
  1 sibling, 0 replies; 10+ messages in thread
From: Al Kossow @ 2011-12-09 23:17 UTC (permalink / raw)


On 12/9/11 2:43 PM, Al Kossow wrote:
> I dug through some of my old tape images and found a modified version
> for another synthesizer
>

the sources for V6 chess are under harvard/3/ken/chess




^ permalink raw reply	[flat|nested] 10+ messages in thread

* [TUHS] speak.c, or sometimes the bits are under your nose
  2011-12-08 23:08 [TUHS] speak.c, or sometimes the bits are under your nose Warren Toomey
  2011-12-09 22:43 ` Al Kossow
@ 2011-12-11  0:34 ` Jonathan Gevaryahu
  2011-12-11  2:51   ` Doug McIlroy
  2011-12-12  8:13 ` Jonathan Gevaryahu
  2 siblings, 1 reply; 10+ messages in thread
From: Jonathan Gevaryahu @ 2011-12-11  0:34 UTC (permalink / raw)


On 12/8/2011 6:08 PM, Warren Toomey wrote:

Here's a few extras so far:
An excel spreadsheet used to verify the contents while restoring the 
table, and the un-fixed NUL-padded speak.c file as present on disk. The 
missing sector is filled with NULs.
The votrax sc-01 datasheet i used to fill in the excel sheet can be 
found at http://www.redcedar.com/sc01/sc01.pdf

I'm working on restoring speak.v right now, and am also looking at that 
new image Al Kossow sent.
Doug Mcilroy sent me a copy of speak.v from a later non-votrax 
(apl-based?) synthesizer and the words/rules seem to be in the same 
order as in the original votrax version. I don't know if I can 
distribute it.

One thing I didn't mention if you're diving into the disk image with a 
hex editor: for some reason, I'm not exactly sure why, the file is 
stored spread all over the place but (almost?) always generally in 
reverse sector order. So if each letter represents a sector and A is the 
first sector (and x are sectors you're not interested in) the file would 
be arranged:
...HxxxxGxFxxxxExxDxxxCBxxxxxA

-- 
Jonathan Gevaryahu AKA Lord Nightmare
jgevaryahu at gmail.com
jgevaryahu at hotmail.com

-------------- next part --------------
A non-text attachment was scrubbed...
Name: speak.c
Type: application/octet-stream
Size: 14336 bytes
Desc: not available
URL: <http://minnie.tuhs.org/pipermail/tuhs/attachments/20111210/aaea25f5/attachment.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: speak_c_table.xlsx
Type: application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
Size: 15834 bytes
Desc: not available
URL: <http://minnie.tuhs.org/pipermail/tuhs/attachments/20111210/aaea25f5/attachment.xlsx>


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [TUHS] speak.c, or sometimes the bits are under your nose
  2011-12-09 22:43 ` Al Kossow
  2011-12-09 23:17   ` Al Kossow
@ 2011-12-11  2:11   ` Jonathan Gevaryahu
  1 sibling, 0 replies; 10+ messages in thread
From: Jonathan Gevaryahu @ 2011-12-11  2:11 UTC (permalink / raw)


A bit more recovered from the dennis_v6 tape:
speak.v (I believe in its entirety, so the speak program is probably 
usable now! The file Doug sent me helped quite a bit here, as the order 
isn't only alphabetical which was throwing me off)
vs.c (this exists in the v5 archive 
(http://minnie.tuhs.org/cgi-bin/utree.pl?file=V5/usr/sys/dmr/vs.c) but 
the version here has ~2 lines different; the 'vsmap' character array 
only exists in the v5 one, here it is embedded in the code as a string, 
hence may be slightly older?)

Note both of these files violated the 'all sectors appear in reverse 
order' "rule" and each had one sector which appeared 'out of pattern'.


-- 
Jonathan Gevaryahu AKA Lord Nightmare
jgevaryahu at gmail.com
jgevaryahu at hotmail.com

-------------- next part --------------
A non-text attachment was scrubbed...
Name: speak.v
Type: application/octet-stream
Size: 11696 bytes
Desc: not available
URL: <http://minnie.tuhs.org/pipermail/tuhs/attachments/20111210/770a12f5/attachment.obj>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: vs.c
URL: <http://minnie.tuhs.org/pipermail/tuhs/attachments/20111210/770a12f5/attachment.c>


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [TUHS] speak.c, or sometimes the bits are under your nose
  2011-12-11  0:34 ` Jonathan Gevaryahu
@ 2011-12-11  2:51   ` Doug McIlroy
  0 siblings, 0 replies; 10+ messages in thread
From: Doug McIlroy @ 2011-12-11  2:51 UTC (permalink / raw)


Astonishing.  I have no recollection of Coulouris's port to
another synthesizer.  A case of arheologists knowing more
about a bygone era than its inhabitants did.

doug



^ permalink raw reply	[flat|nested] 10+ messages in thread

* [TUHS] speak.c, or sometimes the bits are under your nose
  2011-12-08 23:08 [TUHS] speak.c, or sometimes the bits are under your nose Warren Toomey
  2011-12-09 22:43 ` Al Kossow
  2011-12-11  0:34 ` Jonathan Gevaryahu
@ 2011-12-12  8:13 ` Jonathan Gevaryahu
  2011-12-13  3:08   ` [TUHS] Command line post-arguments with #! Random832
  2011-12-13 19:29   ` [TUHS] speak.c, or sometimes the bits are under your nose Jonathan Gevaryahu
  2 siblings, 2 replies; 10+ messages in thread
From: Jonathan Gevaryahu @ 2011-12-12  8:13 UTC (permalink / raw)


Here's speak.m, or rather, what little I could find of it. I believe 
there's some way documented in the speak.6 manpage of using TR or some 
command line parameters to speak.o to regenerate it from speak.v; only 3 
sectors on disk survived of speak.m

There's also a lot of other interesting stuff on disk here, like what 
looks like an early version or predecessor to red, the restricted ed, 
which doesn't seem to survive elsewhere except in a much modified and 
comments-translated-to-russian version here:
http://code.google.com/p/retrobsd/source/browse/trunk/bin/re-src/r.wind.c?spec=svn251&r=251
(there's at least one sector of code missing, the beginning of the 
setupviewport function and the end of the comment block that precedes 
it, and I may be unintentionally merging two files in my current attempt)
(or maybe it does survive on the tarred disk Al K. posted, which I still 
haven't figured out how to un-tar)
There is also some stuff which looks like it was intended for children 
to use (as part of an exhibit at bell labs?), interacting with the 
pdp-11 using a green button and possibly speech using speak, to play 
hangman and other games. It includes kid friendly messages "Sorry, the 
turtle is either napping or too busy." "we have to stop the computer for 
a few minutes so that we can fix it. please stand by." etc.
There's also the source code to SNOBOL III here, I don't know how 
fragmentary or complete.

I could probably spend WEEKS figuring out all the stuff hidden on the 
disk image!

-- 
Jonathan Gevaryahu AKA Lord Nightmare
jgevaryahu at gmail.com
jgevaryahu at hotmail.com

-------------- next part --------------
A non-text attachment was scrubbed...
Name: speak.chunk.m
Type: application/octet-stream
Size: 2560 bytes
Desc: not available
URL: <http://minnie.tuhs.org/pipermail/tuhs/attachments/20111212/99129fcf/attachment.obj>


^ permalink raw reply	[flat|nested] 10+ messages in thread

* [TUHS] Command line post-arguments with #!
  2011-12-12  8:13 ` Jonathan Gevaryahu
@ 2011-12-13  3:08   ` Random832
  2011-12-14 23:36     ` Sven Mascheck
  2011-12-13 19:29   ` [TUHS] speak.c, or sometimes the bits are under your nose Jonathan Gevaryahu
  1 sibling, 1 reply; 10+ messages in thread
From: Random832 @ 2011-12-13  3:08 UTC (permalink / raw)


On 12/12/2011 3:13 AM, Jonathan Gevaryahu wrote:
> comments-translated-to-russian version

Speaking of DEMOS, I was browsing through that a while back (when it was 
first posted here; I forgot to post about it at the time) and saw a 
feature that doesn't seem to have existed anywhere else that I could 
find - placing interpreter arguments after the command line arguments of 
a script.

I.e. something like "#!/bin/foo bar $* baz". Has any American unix had 
this? Some these days won't even allow multiple arguments at all.

I don't know Russian - it'd be interesting to see what else was 
unique/new in DEMOS.



^ permalink raw reply	[flat|nested] 10+ messages in thread

* [TUHS] speak.c, or sometimes the bits are under your nose
  2011-12-12  8:13 ` Jonathan Gevaryahu
  2011-12-13  3:08   ` [TUHS] Command line post-arguments with #! Random832
@ 2011-12-13 19:29   ` Jonathan Gevaryahu
  1 sibling, 0 replies; 10+ messages in thread
From: Jonathan Gevaryahu @ 2011-12-13 19:29 UTC (permalink / raw)


On 12/12/2011 3:13 AM, Jonathan Gevaryahu wrote:
> [I'm seeing] what looks like an early version or predecessor to red, 
> the restricted ed, which doesn't seem to survive elsewhere except in a 
> much modified and comments-translated-to-russian version here:
> http://code.google.com/p/retrobsd/source/browse/trunk/bin/re-src/r.wind.c?spec=svn251&r=251 
>
> (there's at least one sector of code missing, the beginning of the 
> setupviewport function and the end of the comment block that precedes 
> it, and I may be unintentionally merging two files in my current attempt)
> (or maybe it does survive on the tarred disk Al K. posted, which I 
> still haven't figured out how to un-tar)
Well, I figured out how to untar Al's disk (it needs commandline bsd or 
gnu tar -xf, 7zip does NOT LIKE IT), and indeed a later but still very 
similar version of that editor, which is the RAND editor (as mentioned 
here: http://www.rand.org/content/dam/rand/pubs/notes/2006/N2239-1.pdf 
), not restricted ed at all (unless red is based on rand editor, which I 
don't know yet). Hence, RE-SRC (rand editor source) in the russian 
thing. The version on dennis_v6 is older(1975?) than the one on the tar 
Al posted (1982?), but much of the code is nearly the same. The code is 
unfortunately missing quite a few sectors, and some parts of the 1982? 
code were reorganized enough to make reassembling the 1975? code difficult.

-- 
Jonathan Gevaryahu AKA Lord Nightmare
jgevaryahu at gmail.com
jgevaryahu at hotmail.com




^ permalink raw reply	[flat|nested] 10+ messages in thread

* [TUHS] Command line post-arguments with #!
  2011-12-13  3:08   ` [TUHS] Command line post-arguments with #! Random832
@ 2011-12-14 23:36     ` Sven Mascheck
  0 siblings, 0 replies; 10+ messages in thread
From: Sven Mascheck @ 2011-12-14 23:36 UTC (permalink / raw)


On Mon, Dec 12, 2011 at 10:08:20PM -0500, Random832 wrote:

> Speaking of DEMOS, I was browsing through that a while back (when it
> was first posted here;

I guess this: http://minnie.tuhs.org/pipermail/tuhs/2011-May/002387.html

> I forgot to post about it at the time) and saw a feature that
> doesn't seem to have existed anywhere else that I could find -
> placing interpreter arguments after the command line arguments
> of a script.

> I.e. something like "#!/bin/foo bar $* baz".

Now that looks like a quite special hack to me,
The mentioned d22.tar.gz -> d22/sys/sys.tar.Z -> sys/sys1.c has
# define SCRMAG  "#!"
# define SCRMAG2 "/*#!"
# define ARGPLACE "$*"
# define SHSIZE  70
# define ARGV    11
it accepts both #! and /*#! (equivalent), 70 chars, at most
11 arguments, and explains (russian guessed and then omitted here):

usually

    script x with "#!CMD A1 A2 A3"
    called as "x B1 B2"
    results in "CMD A1 A2 A3 /.../.../x B1 B2"

while in D22

    script x with "#!CMD A1 $* A2 A3"
    called as "x B1 B2"
    results in "CMD A1 /.../.../x B1 B2 A2 A3"

> Has any American unix had this?

I haven't seen such anywhere, but not the above until now, either.
But I believe that you can discard those which are listed here
http://www.in-ulm.de/~mascheck/various/shebang/#results
from your list of candidates.

> Some these days won't even allow multiple arguments at all.

Well the original implementation (post 7th ed and 4.0/4.1 BSD)
didn't allow arguments at all ;-)  But multiple arguments
definitely is the minority (AFAIK Plan9, some FreeBSD,
MacOSX, Minix, BSD/OS, and some early cygwin).



^ permalink raw reply	[flat|nested] 10+ messages in thread

end of thread, other threads:[~2011-12-14 23:36 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-12-08 23:08 [TUHS] speak.c, or sometimes the bits are under your nose Warren Toomey
2011-12-09 22:43 ` Al Kossow
2011-12-09 23:17   ` Al Kossow
2011-12-11  2:11   ` Jonathan Gevaryahu
2011-12-11  0:34 ` Jonathan Gevaryahu
2011-12-11  2:51   ` Doug McIlroy
2011-12-12  8:13 ` Jonathan Gevaryahu
2011-12-13  3:08   ` [TUHS] Command line post-arguments with #! Random832
2011-12-14 23:36     ` Sven Mascheck
2011-12-13 19:29   ` [TUHS] speak.c, or sometimes the bits are under your nose Jonathan Gevaryahu

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).