|
|
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.