Annotation of coherent/b/kernel/FWB/hooks, revision 1.1.1.1

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.

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.