*start*
01181 00024 US 
Date: 13-May-82 11:10:11 PDT (Thursday)
From: verplank.pa
Subject: Two-day Voice Meeting, May 24,25
To: NDSmith, Braun.es, Irby, DaveSmith, Dalal, Roberts, Trigoboff, Nagata
cc: verplank.pa, Swinehart, Stewart

Charles has just suggested that we need some intensive discussion before the completion of Goals and Requirements documents and proposes a two-day working meeting.  Could we do it Monday and Tuesday, May 24,25?  I'll see if I can reserve a conference room in Bldg. 35 or Parc Place  -- just to get away a bit.

I just talked to Dan Sweinhart about participating.  He could come Monday.  I'd like a presentation from Dan and Larry about their work, some of the technical background that we need for decision making (e.g. compression or not), and some idea of the future (PBX vs. Etherphone).

We need to nail down as best we can, some of the architecural alternatives.  I'd like Yogen and Mike to present the alternatives and the data gathered so far in helping to decide.

I'd like to work thru some detailed usage scenarios, illustrating the impact of alternative user-interfaces.

Any suggestions?  Additions to agenda?  Other people?   --Bill
*start*
00747 00024 US 
Date: 13 May 1982 12:44 pm PDT (Thursday)
From: Birrell.pa
Subject: Maintain
To: Cedarusers↑
cc: , Birrell
Reply-To: Birrell

A version of Maintain that runs under Cedar 3.0 is available.  See Maintain.bcd
in [Indigo]<Grapevine>Maintain>Pilot>Maintain.df.  Load it with the userexec,
and it registers the command "Maintain".  When you give that command, it
creates a typescript viewer, with the same old teletype interface (except that you
use Control-DEL to abort, instead of DEL).  Beware:  don't use the "Destroy"
button yet:  it doesn't clean up properly, and will crash if Maintain is typing at
you at the time.

I still have a vacancy for a volunteer who'd like to build a menu-driven
interface to Maintain.

Andrew

*start*
00503 00024 US 
Date: 13-May-82 13:07:10 PDT (Thursday)
From: ndsmith.pa
Subject: Re: Two-day Voice Meeting, May 24,25
In-reply-to: verplank's message of 13-May-82 11:10:11 PDT (Thursday)
To: verplank
cc: NDSmith, Braun.es, Irby, DaveSmith, Dalal, Roberts, Trigoboff, Nagata, Swinehart, Stewart

Bill--

I cannot participate in a voice meeting the week of May 24. The following week would be okay.

I'll think about agenda and participants further and let you know of any good ideas.

				Nancy
*start*
01323 00024 US 
Date: 17 May 1982 6:14 pm PDT (Monday)
From: ornstein.PA
Subject: Re: Lark DMA interference
In-reply-to: Stewart's message of 15 May 1982 11:19 pm PDT (Saturday)
To: Stewart
cc: VoiceProject↑
Reply-To: ornstein

Larry,

Just for the hell of it I checked the flip-flop to see if I could see any evidence of
glitching and could not. Shouldn't matter anyway as any glitching would take
place after the enable gate was shut off by SLCREQ having gone low.

My guess is that the trouble is indeed not getting the flop off until completion
of the first SLCREQ AFTER TSN. How about experimenting to verify this by
using one of the SIOCLKs to get a delayed start for your TIMER? I'm not clear
about just which Timer channel you're presently using for the holdoff, but it
would seem that with two of them - the second (which would do the actual
holdoff) "triggered" by the first and the first triggered by TSN or equivalent,
you ought to be able to position the holdoff wherever you want so that the
enable flop can get shut off BEFORE TSN - thus permitting the Slave to take
right off and run (hopefully to completion) without interference. I don't know
how we would SOLVE this - what I'm suggesting is only a means of verifying
that if we could get the flop off before TSN, things would be OK. 

????

S.  
*start*
01532 00024 US 
Date: 18 May 1982 10:29 am PDT (Tuesday)
From: ornstein.PA
Subject: Another two thoughts about interference
To: Stewart
cc: ornstein

At 1.47 MB, the Ethernet uses up a byte every 5.44 us. - in each direction. I
don't understand the relative phasing of EthIn and EthOut but assuming the
worst, then the maximum interval between SLCREQ's will be 5.44 us. (I.e., if the
SLC's buffer has just filled, it will make another request no later than 5.44 us
from now). So if we could shift the timer back so that it starts say 6 us. before
the start of TSN, then we're guaranteed to have a SLCREQ during that 6 us
which will shut off the enabling flop - before the TSN arrives to start the Slave
making requests. How wide is FrameSync? 6 us, maybe?

Another idea would be to switch the Slave and SLC's groupings so that the SLC
used the time following TSN and was cut off leaving just enough time for the
slave to do its references before the next TSN. TSN could turn on (DC set) the
enable flop - which would be shut off by the (end of the) first SLCREQ after
the timer ran out. Just as we presently expect (hope) that the Slave will have
finished its requests before the timer runs out, in that new scenario, we would
expect (hope) that the residual time left before the next TSN would suffice. I
have no idea how putting the shared references at the END of the period, as
opposed to the beginning, would screw up the code's phasing. All this makes my
head ache and it's YOU who have to cope with the details.

S.

*start*
02099 00024 US 
Date: 18 May 1982 4:42 pm PDT (Tuesday)
From: ornstein.PA
Subject: Consultants for Voice Project
To: Taylor, Averitt, Mitchell 
cc: VoiceProject↑
Reply-To: ornstein

1. BILL DUVAL

Several months ago we bought a C compiler from Duval. It's written in BCPL,
runs on an Alto, and compiles 8088 code (for the Etherphone). Duval has been
under contract to SDD, but on the side has fixed a number of bugs in the
compiler for us. It's now at the point where we're crossing the boundary between
fixing bugs and adding features, so we need to begin to pay him - or the work
will never get done. We discussed with him what was needed and concluded we
need about a week's work. However, in case we come up with something further,
I want to leave things a bit open-ended, and would prefer something like time
and materials with maximum of (say) two weeks of his time. He says this cannot
be done under the present SDD contract; wants to negotiate a new fee for this
work (says Xerox is one of his poorest paying customers, etc). I've just talked to
Harlan who is going to consider all this and get back to me. I'd like the
arrangements to be settled ASAP. Meantime we are working up a prioritized list
of tasks for Duval and will discuss them with him. 

2. RON TOLMEI

We need some analog circuit design for the Etherphone. Larry COULD do it, but
he's busy as hell with the digital stuff and programming and is not expert in
analog phone circuitry. We got hold of Tolmei (has a 10-man consulting firm in
Walnut Creek) on a recommendation of Marty Graham (UCB Prof.). After signing
a Disclosure agreement we had him over for a chat yesterday and explained what
we need. (His rate is $60/hour; I took it on myself to say we'd find a way to pay
him for yesterday at least). He is going to contact me by Friday and give an
estimate of time/cost to do the job. I spoke to Harlan about this as well and
Harlan's preference is to hire him as a consultant - here again I want time and
materials since I want him to help us fix it until it works. More on this as soon
as we hear back from him.
*start*
04313 00024 US 
Date: 19 May 1982 11:03 am PDT (Wednesday)
From: ornstein.PA
Subject: Problems with the C environment:
To: Duvall
cc: VoiceProject↑, Averitt
Reply-To: ornstein

Bill,

The following is a memo that Larry and Dan prepared containing their requests
and complaints. Contact Larry if you have questions. The test cases are on
[Indigo]<Voice>Larksw>.

I called Harlan and told him I thought we would need about a week of your time
- but I wanted an arrangement whereby we could get more if needed. He's to
call me back shortly. Meanwhile I told him we are presenting you with this
list.  

Severo

- - - - - - - - - - - - - - - -

Stewart, D. Swinehart, May 18, 1982  3:10 PM

Priority order

Compiler runs out of space.
   Test case:
	Test122.c
	Test123.c (same, but most nested structures replaced by int[n])

Ldr86 runs out of space on suitably large programs.  Perhaps change it so that all
Externals need not be resolved on the first pass.  (e.g. LDR86 should be able to
run multiple passes.)  It could be used as the assembler second pass on each file.

Compiler, assembler, loader to run on D-machines.  We can getr microcode that
does not implement getframe and storeargs.  The remaining problems might be
use of extended memory in alto-specific ways and perhaps diskio.

Direct to memory operations on structure fields don't work.  They always
reference the first word of the structure.
    Test case:
	Test117.c

JUMP range overflows
    I have a program that won't link because a short jump won't reach.
    Test case:
        Test115.c
        Test115.ld
        Test115ls.cm
    Directions:  Run @Test115ls.cm@ and observe LOC-86 error message.

    I remember having trouble with case statements in other code as well.
If the case statement is too complicated or too long it quits working.

Minor stuff

Sys.bk. Some way to link programs to the separately linked and loaded stuff in
EPROM.  Intel loader has something called PUBLICSONLY that might do it.

GROUP directives
    I have not been able to link together two C generated programs
    Test case:
        Test114a.c
        Test114b.c
        Test114.ld
        Test114ls.cm
    Directions:  Run @Test114ls.cm@ and observe LOC-86 error message.

    The problem appears to be that multiple GROUP directives break
the loader.  I don't believe that the GROUP directive in the assembler
files produced by the compiler are actually needed.  Perhaps the simplest
solution is to take them out.


The loader does not produce an error file.  Usually there will be error
messages flashed on the display, but they will scroll off.  The .map file
usually winds up empty.  Perhaps the problem is that IO is buffered and
doesn't get written to disk.

When there is an undefined external in a link, the linker mentions it, but
then proceeds to produce piles of "Multiply Defined" messages for a lot
of other symbols.


Minor stuff, unordered

The date printed by the C compiler is still July 1, 1981.

.ERR files produced by the compiler have two difficulties.  First, the err file says
"C errors for file foo.err" instead of "C errors for file foo.c".
Second, the C compiler prints warning messages for undefined static variables,
but does not stop.  Since I use command files, and immediately assemble the
.asm file, the assembler overwrites the .err file produced by the compiler and I
never see it!  Perhaps the c compiler could write .CERR files instead, so
the information would not be lost.  In my code, undefined statics are usually
bugs.

When there are no errors, the compiler and assembler still produce .err files.  It
would be nice if in this case the .err file was deleted.  That would permit me to
use the IF.run program in command files to stop on an error.  The compiler and
assembler might also include a "don't stop on error" option to further this goal.

Assember thinks AH is the same as AL.
    Test case:
	Test118ml.asm
	Test118.ld

I have not been able to figure out how to make ORG work in the assembler.

Move immediate to memory
    I have not been able to generate a move immediate to memory instruction.
    Test case:  Test112ml.asm

Forward References
    I have not been able to get FORWARD to work
    Test case:  Test 113ml.asm and Test113.ld.
    Directions:  Assemble and load, then look at .map file
*start*
02146 00024 US 
Date: 20 May 1982 1:32 pm PDT (Thursday)
From: ornstein.PA
Subject: Etherphone Locator Decisions
To: VoiceProject↑, Overton, McCreight
Reply-To: ornstein

This is to record a few ideas about the Locator for the Etherphone arrived at
during luncheon discussion a few minutes ago.

1. Physical Arrangement

We expect the Etherphone proper (not counting the telephone handset, speaker,
microphone, etc.) to consist of:

	1. a digital board (ETT) roughly 6" x 12", beside which (maybe mounted
	on standoffs or maybe hinged from the ETT board), would be

	2. an Analog board (EAN), perhaps 4" x 6" (Larry's rough guess).

	3. The remaining area (of the second layer), maybe 8" x 6", would be
	dedicated to a third board, the locator logic board (LLB) - physically
	connected in a similar fashion to ETT.

Edge connectors and short ribbon cable provide electrical connections between
ETT and EAN (about 30 connections), and between ETT and LLB (unknown,
but smaller, number of connections). The LLB will also require connection to
some form of small external antenna. (EAN and ETT include other external
connections not mentioned here). A suitable flat-form power supply might form a
third layer.

This hypothetical physical arrangement is subject to Mike's scrutiny and later
evaluation, modification etc. - the important point being isolation of the LLB
onto a separate board.

2. LLB Logical Interface

The LLB will receive and unravel incoming signals (radio or whatever). The
unraveling will almost certainly imply using its own microprocessor) which will
pass, to the ETT, messages of the form "I just heard X at intensity Y". How these
messages will be passed remains undecided - one possibility being via an
Ethernet connection (a second SLC on the LLB sharing the Lark side of the
Ethernet transceiver line).  

3. Power for the LLB

Ed says we should allow him 1.5 amps of +5 volts and .5 amps of +12 volts.

 
These arrangements permit independent development to proceed; the locator can
be added to the Lark at any convenient time, with only modest negotiations
about actual acerage, details of communication, etc. 
*start*
00361 00024 US 
Date: 20 May 1982 3:06 pm PDT (Thursday)
From: ornstein.PA
Subject: Ron Tolmei - Analog guy
To: Stewart, Swinehart, Lampson
cc: ornstein

His estimate was 4 weeks and $14,800. I told him please send our drawings back
with his bill for time so far. I'll pursue Gunning's leads. Next one we'll do more
initial probing over the phone.

S.

*start*
00445 00024 US 
Date: 21 May 1982 9:38 am PDT (Friday)
From: ornstein.PA
Subject: DTMF Encoder
To: VoiceProject↑
Reply-To: ornstein

This is to record the fact that in discussion yesterday Dan, Larry, and I decided
that, after all, we should include a DTMF encoder (only a few dollars and little
real-estate) on the Lark analog board - to avoid all the hassles of trying to pass
sufficiently accurate tone (segments) from Thrush.  

S.

*start*
01571 00024 US 
Date: 23 May 1982 3:14 pm PDT (Sunday)
From: Stewart.PA
Subject: DEC Voice Box
To: VoiceProject↑.pa
cc: NDSmith, Braun.es, Irby, DaveSmith, Dalal, Roberts, Trigoboff, Nagata,
 Verplank, Stewart

------------------------------

Date: 22 May 1982 1123-EDT
From: John R. Covert <RSX-DEV at DEC-MARLBORO>
To: schauble.multics at MIT-MULTICS
Subject: Voice CBBS

The new DEC personal computer (the Professional 325 and 350) has an
option called the Telephone Management System which consists of line
interfaces for two telephone lines, 103, 212, 202, V.21, & V.23
modems, DTMF (Touch-Tone is a trademark of AT&T) transmitter and
receiver, and CVSD Voice CODEC for voice storage.  The device will be
capable of listening for Touch-Tone, timing out (under PDP-11 program
control), and then playing a pre-stored voice message, random accessed
from floppies or winchester.  Four minutes of voice uses one megabyte
of disk, so it is handy to have an Ethernet connection to another
machine with more storage if you want to take lots of incoming
messages.  The device could theoretically call you wherever you are to
play messages it received for you.  This would, of course, be subject
to all the phone network problems previously discussed in this digest
w.r.t. figuring out whether someone had actually answered.

TMS isn't very expensive at all, $895 + $295 for the optional Voice
Unit (a speaker/microphone box for local use of the voice encoding).
The Professional 325 & 350 are competitively priced personal
computers.

------------------------------

*start*
00265 00024 US 
Date: 25-May-82 15:08:06 PDT (Tuesday)
From: Verplank.pa
Subject: Thanks for being there.
To: Stewart, Swinehart
cc: DaveSmith, Irby, Verplank

Larry, Dan,

Thanks for just the right amount of stimulating input to our deliberations. -- Bill
*start*
01367 00024 US 
Date: 25 May 1982 3:48 pm PDT (Tuesday)
From: ornstein.PA
Subject: Buying Parts for Analog Board
To: Stewart
cc: ornstein

Here's the list I know of.

Motorola	MC142100 	4 x 4 analog switch
		MC1458	dual op-amp

Mostek	MK5089	Tone dialer

Mitel		MT8860	DTMF decoder
		MT8865	DTMF filter

Intel		2910A		Codec
		2912A		PCM filter

Fairchild	TIL119	Opto Isolator

PMI		SW7510	quad SPST bi-fet Analog switch

National	LM319	dual voltage comparator
		LM386	low-voltage power amplifier

Questions etc.:

0. Is two each of the above about right, or should it be three or four?

1. What is a 5534 (as for example used in the Microphone pre-amp)?

2. What other parts, used in the telephone and handset interfaces, that I don't
recognize/understand should I order?

3. I will see Mike about finding a +5 volt Dip relay instead of the +12 ones
shown on the telephone and handset interfaces

4. What about the transformers (T1 and T2) shown on the telephone interface?
What is a 671-0313?

5. What is the funny device on the telephone interface marked SV1 with
opposing parallel diodes?

6. Should I assume that all the diodes, resistors and capacitors are standard items
Mike would have in stock or does each one have to be individually checked?
(e.g. is a 1N4737A something special?)

7. I'll ask Mike about the 100uH inductors.

8. Anything else?

S.
*start*
00381 00024 US 
Date: 25 May 1982 5:17 pm PDT (Tuesday)
From: ornstein.PA
Subject: Discussion with Thacker
To: Stewart
cc: ornstein, Thacker

In discussing the problem of the analog board - how/whether to get help with it
etc. Chuck suggested the three of us get together at 2 PM this Friday (in
Chuck's office) to talk over what is the problem. This is a reminder.

S.  

*start*
00686 00024 US 
Date: 25 May 1982 5:23 pm PDT (Tuesday)
From: ornstein.PA
Subject: Duvall assistance
To: Averitt
cc: Stewart, Swinehart, Ornstein, Taylor

Our feeling is that we really need about a week of Duvall's time for really
essential matters. If we have to pay the 500 a day, and you don't get in big
trouble with SDD over it - we'll do it - but feel somewhat taken. At 400/day,
which seems somewhat more reasonable, we would like a little more help -
(though I guess that only really gets us one more day).

I guess in summary, $2500 for necessary help seems worth it - and that should
be accomplishable within a week's work. More $ than that seems excessive. 

Severo

*start*
02308 00024 US 
Date: 26 May 1982 12:35 am PDT (Wednesday)
From: swinehart.PA
Subject: Hold on request for special Dorado microcode
To: Taft
cc: Stewart, swinehart

There is probably a better way to get the effect we want, at least on the Dorado.
The effect we want is for a class of ideosyncratic programs (Duvall's C-86,
ASM-86, and LDR-86 language processors) to run on the Dorado.  As far as we
know, these programs have the following incompatible attributes:

1. They use the Smalltalk-76 style approach to putting the display in bank 1. 
This requires that the emulator and display task do the right things with respect
to bank register requests (is bank reg 5 still the right one to indicate the bank
selection for the display task?).

2. They count on a modified version of the getframe microcode, which:
	a) allocates two additional words in each stack frame, then:
	b) zeroes the word just below the new stack back (the second of the 
	   additional words for the NEXT frame allocated.) 
   This is used to implement a modern version of the ancient and notorious
   POGOS seterror/callerror kludge.

I am rusty, but it's my recollection that the Smalltalk microcode includes the
complete BCPL emulator, and will run BCPL, too.  So it would seem that the most
straightforward way to support these programs is to modify a version of that
Smalltalk microcode to allocate frames as specified in step 2.  I've sketched the
one or two instruction (depending on what works) addition to the getframe
microcode, but haven't assembled or tested it.  Bill's programs currently call
InitBCPLRuntime, but the effects of that would be totally ignored, I believe, on
the Dorado.

The reason for doing things this way is to minimize the amount of work that we
have to ask Bill to do for us under contract.  I'm beginning to think that is a
very good strategy, indeed.

Let me know if this approach seems sound to you; if so, clearly you shouldn't
bother to produce the version of the microcode that doesn't trap GetFrame.

Thanks,
Dan

P.S. I assume there's no way to get the effect of
	T← (Store←T)+1, DBuf ← 0;
in one Dorado instruction, unless you have put a zero into some R register in a
preceding instruction.  If this is the case, the change takes one more
microinstruction.  I'm sure we'll notice.
*start*
00332 00024 US 
Date: 26 May 1982 8:44 am PDT (Wednesday)
From: ornstein.PA
Subject: Tone Generator
To: Stewart
cc: ornstein

The DTMF generator takes in 4 row lines and 4 column lines to generate tones.
Should we just use up 8 PIO lines for this? Are the names DTMFRow0 -
DTMFRow3, and DTMFCol0 - DTMFCol3 acceptable?

S.

*start*
00707 00024 US 
Date: 26 May 1982 8:50 am PDT (Wednesday)
From: Taft.PA
Subject: Re: Hold on request for special Dorado microcode
In-reply-to: swinehart's message of 26 May 1982 12:35 am PDT (Wednesday)
To: swinehart
cc: Stewart

Too late...

[Ivy]<Taft>Swinehart.mb is a vanilla Alto emulator without BCPLRuntime and
with the XMFaultTask that handles Alto-style bank switching for the display. 
Retrieve it and [Indigo]<Dorado>LoadRam.run, and then type

	> LoadRam Swinehart.mb

to load and start the special microcode.

With regard to your Dorado instruction, you can do precisely that, but the
syntax for an encoded constant includes an appended "C".  That is:

	T← (Store←T)+1, DBuf ← 0C;

Ed

*start*
01070 00024 US 
Date: 26-May-82  9:24:40 PDT (Wednesday)
From: Verplank.pa
Subject: Re: DEC Voice Box
In-reply-to: Stewart's message of 23 May 1982 3:14 pm PDT (Sunday)
To: Stewart, Swinehart
cc: NDSmith, Dalal, Verplank

I would like to get more detail on approaches to compression.  As I understand it, we want to use the 64kbs mu-law for it's quality.  The CVSD codec that DEC is using does not have adequate quality. (adequate for what?) Our preferred approach(es) to compressions would be:
 1) silence suppression/encoding with the option to play back with or without the silence added back in (or better would be some simulation of background noise)
 2) a kind of background archiving at the voice server which would compress (and degrade) on some schedule those voice files with low enough priority to not require high quality, and with high enough priority to not be flushed (or put on tape).

What are some of the options for how we do this.

Our current plans are for no compression - I just want to be sure I can answer the obvious questions.

--Bill
*start*
01330 00024 US 
Date: 26 May 1982 10:14 am PDT (Wednesday)
From: ornstein.PA
Subject: Parts for Analog Board (#2)
To: ornstein, Overton
cc: Stewart

----------------------
Specials:

Motorola	MC142100 	4 x 4 analog switch			1 ea.
		MC1458	dual op-amp				2 ea.

Mostek	MK5089	Tone dialer				1 ea.

Mitel		MT8860	DTMF decoder			1 ea.
		MT8865	DTMF filter				1 ea.

Intel		2910A		Codec					1 ea.
		2912A		PCM filter				1 ea.

Fairchild	TIL119	Opto Isolator				2 ea.

PMI		SW7510	quad SPST Analog switch		1 ea.

National	LM319	dual voltage comparator		1 ea.
		LM386N-1	low-voltage power amp		1 ea.

Signetics	NE5534	single op-amp			1 ea.

Midcom	671-0313	hybrid transformer			2 ea.

Schauer	VR-60	silicon varistor			1 ea.

----------------------

1. Get prices for above items. Then we will decide how many of each to buy.
Probably get 10 of cheapies and a few of the expensive ones.

2. Find a +5 volt Dip relay - 4PDT - instead of the +12 ones shown on the
telephone and handset interfaces

3. Be sure we've got some 100uH inductors?

4. Discuss building a prototype on vector board with Larry and Mike

----------------------
Assume that all diodes, resistors and capacitors are standard items that we would
have in stock except Zeners. Zener of equivalent voltage rating is OK - else get
the specific one (e.g. 1N4737A)


*start*
03586 00024 US 
Date: 26 May 1982 1:19 pm PDT (Wednesday)
From: Stewart.PA
Subject: Re: Compression
In-reply-to: Verplank's message of 26-May-82  9:24:40 PDT (Wednesday)
To: Verplank
cc: VoiceProject↑.pa, NDSmith, Dalal

Before any discussion of quality, let's examine required hardware.  It seems clear
that compression of non-interactive voice need not be real-time, and could be
done by software as a background task.  De-compression, however, seems to
require real-time service -- you don't want to ask users to give advance notice
of intent to play something back so it can be decompressed.

mu-255 encoding would most naturally use an LSI codec chip (combined A/D,
encoder, decoder, and D/A) at each terminal.  There would be no additional
compression hardware anywhere.  Silence detection might require a small amount
of hardware at each terminal which records, but none at any playback-only
terminal.  Without real-time software silence detection or hardware, silence
suppression could still be accomplished by background software in the file
server.  Playing back silence is trivial of course.

CVSD chips are also available (e.g. Motorola).  Such a chip would be required at
every terminal to allow real-time playback.  These chips supply direct
analog-to-compressed conversion, so if you only want CVSD, you don't need the
mu-255 codec.

Other kinds of compression seem best suited for digital signal processing chips
such as the (new) TI TMS 320.  (See Electronic Design May 27, 1982, p 129)  The
TMS320 can handle LPC at 2400 bps in real-time and also roughly 10 Kbps
speech with quality approaching that of mu-255 (probably better than 16 Kbps
CVSD by a good margin.)

If you forsee a world with many different speech formats, I suspect a voice
terminal with a reprogrammable (read RAM, not ROM) digital signal processing
chip will be required.

Incidently, the Alto/Auburn has a 12 bit linear A/D and D/A  (96 Kbps). 
Compression to 64 Kbps mu-255 or to 16 Kbps Adaptively quantized differential
PCM (ADPCM) is done by microcode.  If you can burn a workstation microcode
task (and ~20% of the CPU cycles) on voice, you may not need special hardware
to achieve 16 Kbps CVSD quality compression.  I imagine the CVSD chip is
cheaper.

I think the reasonable steps are:
96-128 Kbps	linear			uncompressed, very good quality
64 Kbps	mu-255		quality of a very good local phone call
32 Kbps	ADPCM/CVSD	almost as good, slightly noisier
16 Kbps	ADPCM/CVSD	noticably noisier
9.6 Kbps	APC, Sub-Band	signal processing needed, ~equivalent to
						32 Kbps CVSD
2.4 - 6 Kbps	LPC etc.		signal processing needed, speaker recognition
					somewhat impaired, some familiarity required
					for consistant understanding 

If you go for a DSP equipped voice terminal, you can mix and match any of
these.  If you go for microcode, you can mix & match above 16 Kbps.  If you go
for hardware, you will be limited to mu-255 and/or CVSD depending on which
chips (or both) you put in the terminal.

I suspect the right way to do the deciding is to figure out which is cheaper. 
Equipping every terminal with a CVSD chip or DSP in addition to the mu-255
codec or buying more big disk drives.  How much will be stored?

(I should mention that if you build 9.6 Kbps or below, you can sell them as
secure (encrypted) digital telephones.)

Perhaps you should build your PC boards with sockets for both a mu-255 codec
and a CVSD chip, then plug in either or both.  A DLion Mesa program can
probably approach real time converting from one to the other if it is not doing
anything else.

	-Larry


*start*
01504 00024 US 
Date: 26 May 1982 5:06 pm PDT (Wednesday)
From: ornstein.PA
Subject: Duvall consulting
To: Stewart, Swinehart
cc: ornstein, Taylor, Averitt

Harlan suggests one of three approaches:

1. Offer $2500 for a specified set of tasks.

Advantage is we know what will get done; disadvantage, no flexibility.


2. Offer $500/day for up to a max. of $2500 - for whatever gets done in 5 days.

Advantage is we limit our max outlay (to less than #4) and have flexibility;
disadvantage, we may not get all we need done.


3. Offer $400/day for up to a max. of $4000 - for whatever gets done in 10 days.

Advantage is we have flexibility, can get more done than under 1 or 2 and at a
lower rate; disadvantage is higher max outlay and less incentive.


Harlan sort of likes #1 but thinks Duvall won't like it or might not satisfy our
minimum needs for that much. I think Harlan's second favorite is #3. The
question is, what do WE think and want? Larry and I talked and concluded that,
given the alternatives, 2500 was about right and 5000 was too much. So I tend to
favor 1 or 2 and, to the extent we think we can judge the size/trust Duvall/etc.,
prefer 2. What do you guys think? 

On May 19 I sent Duvall a msg. listing all the things you had listed in your
May 18 "Problems with the C environment". I gather you've given him a couple
more items since then. If we propose 1 or 2, we will need to narrow the list to
what we reasonably expect he can do in a week.

Comments? Suggestions?

S.

*start*
00845 00024 US 
Date: 26 May 1982 5:26 pm PDT (Wednesday)
From: ornstein.PA
Subject: Wiring Trouble?
To: Stewart
cc: ornstein

The notebook drawing indicates the output of the LS32 gate goes to SLCDAck (I
assume you meant SLCDAck' - I added the ' to the drawing). However it looks to
me as though you have wired it instead to the input of the inverter in H61
which was used to invert the DMA's SLCDAck' to SLCDAck for the use by the
SLC. That seems fine - except you didn't bend up the input leg of the inverter.
So it seems that that pin is also being driven directly by the DMA's SLCDAck'.
Thus, even though the LS32 tries to pull it up, the DMA's SLCDAck' pulls it
down - so it's as though the flop weren't there.

Is this correct?

S.

P.S. After finding that, I quit looking further - but will continue if that isn't the
problem. 

*start*
00632 00024 US 
Date: 26 May 1982 7:36 pm PDT (Wednesday)
From: Swinehart.PA
Subject: Re: Hold on request for special Dorado microcode
In-reply-to: Taft's message of 26 May 1982 8:50 am PDT (Wednesday)
To: Taft
cc: swinehart, Stewart

Thank you for your efforts.  I hope it didn't take too long to do.   I'll ask your
advice in producing my even stranger configuration later on.  Sounds like it's
just a matter of pasting the right pieces together.

I would have written the 0C form had I tried it.  Mainly I didn't know if there
was enough microinstruction left after issuing the Store to get the constant onto
the B bus.

*start*
02677 00024 US 
Date: 1 June 1982 12:11 pm PDT (Tuesday)
From: Swinehart.PA
Subject: Update on C-86 Travails
To: Duvall
cc: VoiceProject↑, Swinehart
Reply-To: Swinehart

Bill,

I'd appreciate it if you could call me (x4473) sometime soon to discuss how long
you think our list of projects (or some rational subset of them) will take.  This
will help us with Harlan in trying to get things set up.

I also thought I'd bring you up to date on where we are, since Severo's message
of a week or so ago.  Since then, I've discovered the following things:

1. There is a built-in limit on the total number of structure definitions and
structure field definitions (18 and 108, respectively, if you believe symbols
average 16 characters -- in practice, somewhat more than that.)  I found the
relevant constants and doubled them.  The tables still fit, and all my programs
fall within the doubled limits.  Ideally, these values could be made variables
under control of some of your numerical option switches, but the "out of space"
problem can now be relegated to the minor annoyance category, which we can
ignore if we run out of time.

1.5. I managed to get all of my programs (about 8 files, each 4-6 pages long) to
compile, after I raised the limit.  It all looks pretty good to me!

2. By inhibiting the call to InitBCPLRuntime in the C compiler, and by
producing a version of the Dorado microcode that implements your variant of
GetFrame along with the appropriate subset of the bank register stuff, I managed
to run the compiler on the Dorado.  I haven't tried the assembler and loader, but
I expect no difficulties.  I was not able to get your debugger to operate on the
Dorado -- special op codes or something -- but that's not a serious problem if it's
difficult to deal with.  'Twould be nice to have the InitBCPLRuntime decision,
etc., automated, based on machine version information.  In any case, the "D
machine" compatibility issue is also now a minor, expendible item.

3. Larry told me that you told him that one could say &P to get the address of
procedure P.  I tried it and got "missing (" errors.  We need to be able to generate
these addresses (for both local and external procedures).  This is a new high
priority item for us.

4. Also, Larry has some functions that will do the calls to these "procedure
variables", but the whole process could be made smoother if a special facility
were provided (a built-in "Call" pseudo-procedure, for instance.)  If this seems
like a straightforward thing, we should add it to the "Minor stuff" category;
otherwise, forget the whole thing.

I'll be here most of the week, except after 2 today.

Thanks,
Dan Swinehart
*start*
00588 00024 US 
Date:  1-Jun-82 14:21:16 PDT
From: Swinehart.pa
Subject: More "Needed.h"
To: Stewart
cc: Swinehart.pa

I have looked more carefully at the function that I call "MoveBytes" in one of my D programs.  What it really is is "MoveBlock" with a boolean parameter that indicates whether the bytes in each word should be swapped or not, so it should probably have a different name.   The interface would be:

MoveBytes(dest, source, wordCount, swapBytes)
	int *dest, *source;
	int wordCount;	/* number of WORDS to move, believe it or not */
	int /*BOOL*/ swapBytes;
	...
	
*start*
00917 00024 US 
Date: 3 June 1982 10:57 am PDT (Thursday)
From: ornstein.PA
Subject: Duvall Consulting on Voice Project
To: Averitt
cc: Stewart, Swinehart, ornstein, Mitchell, Taylor

Harlan,

Dan Swinehart sent Bill Duvall a list of (minimum) needs and Duvall responded
that the list involved 41 hours work. That sounds like a week to me. We would
thus like to arrange that he will do that work for a fixed fee of $2500 (which in
fact amounts to his $500 per day if his time estimate is correct).

We might negotiate with him about one or two small items on the list - possibly
substituting, by mutual agreement, some other equivalent sized items; but that is
a detail. 

Unfortunately I have to be gone from town for approximately a week starting
tomorrow. In my absence I would ask that you use Dan Swinehart in my place. 

I hope this all works out OK; please let Dan know. Thanks for your help.

Severo

*start*
00567 00024 US 
Date: 3 June 1982 3:14 pm PDT (Thursday)
From: Gifford.PA
Subject: Digital Pager
To: McCreight, VoiceProject↑
cc: Gifford
Reply-To: Gifford

I thought I would voice a personal preferance for a digital pager as contrasted
with a locator.  By pager I mean a device that would "ring" when my phone
rang.  When my pager rang I presumably would head for the nearest
conventient ether-phone, punch in my extension, and answer the call.  Pagers
could be used for other things as well (to deliver messages while I am in a
meeting, and so on).

Dave


*start*
00231 00024 US 
Date: 3 June 1982 3:46 pm PDT (Thursday)
From: ornstein.PA
Subject: Analog (EAN) board files....
To: Stewart
cc: ornstein

...are stored on [Indigo]<Voice>Ean*.sil - should you want them in my absence.

S.

*start*
00499 00024 US 
Date: 4 June 1982 11:02 am PDT (Friday)
From: averitt.PA
Subject: Re: Duvall Consulting on Voice Project
In-reply-to: ornstein's message of 3 June 1982 10:57 am PDT (Thursday)
To: ornstein
cc: Averitt, Stewart, Swinehart, Mitchell, Taylor

Severo,

I'll purpose that Bill accept the fixed fee ($2500) rate to accomplish the job
described.  This probably won't get "massaged" until Monday at the earliest, as I
will be out this PM and Friday.  I'll keep you informed.

Harlan