|
|
1.1 root 1: The C routines of this device driver call assembly routines
2: to produce the various clicks and sounds.
3: These are contained in sdsounds.s.
4: This is the only assembly (thank God).
5:
6: There are several hooks between this code and the kernel.
7:
8: sdload is called by isload (in kb.c), as the last command.
9:
10: sduload is called by isuload (in kb.c), as the last command.
11:
12: sdtime is called by mmtime (in mm.c), as the last command before rescheduling.
13: Sdtime manages longer sounds such as error bells,
14: and executes the deferred speech commands.
15: It also maintains the ongoing reading of text in the internal buffer.
16: Once reading is initiated, sdtime performs a form of polling,
17: asking whether the synthesizer is ready for more.
18: If it is, send more text.
19: Continue reading until another command is entered.
20: The polling rate of 10HZ is (generally) adequate for this task.
21: The rescheduling frequency is dynamically determined by the variable mmticks.
22: Usually this is set to 10 ticks, the original value.
23: It is upped to 1 tick when producing audio feedback
24: or initiating speech.
25: The new routine mmhasten hastens the execution
26: of mmtime() by rescheduling with mmticks = 1.
27:
28: mmgo1() is called from mm_start() in mm.c.
29: After each byte is taken from the output queue of the tty,
30: c = ttout(tp),
31: call mmgo1(c), and exit the loop if the return value is 0.
32: mmgo1() in turn calls mmgo() if the character needs
33: to be displayed on the screen.
34:
35: isrint() in kb.c calls sdinkey_coh().
36: This in turn calls isin() if the character is destined
37: for the tty input queue.
38: If the return is 0 then kb.c calls the usual machinery,
39: including isspecial() to interpret special characters.
40: Some code in isrint() is modified to allow control-fkeys to pass through;
41: they were originally discarded.
42:
43: Before initializing the serial ports, al.c calls sdport_taken
44: to see if a speech session has taken over a serial port,
45: whereupon al.c should leav it alone.
46: As a quick hack, both sibling ports are declared nonexistent.
47: Someday we will leave the sibling port accessible.
48:
49: Patchable variables sd0synth, sd0comport, and sd0bufsize
50: determine the type of synthesizer, the serial port it is attached to,
51: and the desired size of the internal circular buffer respectively.
52: Use patch to change these parameters.
53: Set sd0synth to 0 and the driver behaves
54: exactly as it use to.
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.