jxc@rayssd.RAY.COM (Jeffrey J. Clesius) (12/05/86)
Since Version 2.2 of the VT100 program had been issued, I had not been able to perform a kermit transfer in either direction without timing out. I had also noticed the Amiga-'.' problem after issuing an Amiga-ESC for a new CLI. The fixes for the above problems are displayed below. The kermit problem was related to parity settings. I have to connect using 7-bits, even parity. During a kermit transfer, the program timed out trying to compare a 0x81 SOH transmitted from the host with the 0x01 SOH constant defined in the program. The fix is applied to 'xmodem.c' as diff'ed below: xmodem.c (mask off parity-bit, if parity set): 135c135 < return(ch & 0xFF); --- > return( ch & (p_parity == 0 ? 0xFF : 0x7F) ); The masking removes the parity bit unless parity is set to 'NONE'. The Amiga-'.', I believe is somehow related to the loss of the toggle of the amiga key when handling the keyboard in RAW mode. I have not determined the logic fix, but have allowed Intuition to detect the Amiga-'.' by assigning it as a Command-Key sequence for the menus. I have also assigned other Amiga-Key sequences for operations I commonly perform. Use these as a guide for your own. The changes are in 'window.c' to remove the Amiga-key detection, and 'init.c' to establish the command keys: window.c (remove Amiga-key detection): 261d260 < static int amiga = 0; 276d274 < case 103: if (++amiga > 2) amiga = 0; c = 0; break; 278d275 < case 231: if (--amiga < 0) amiga = 0; c = 0; break; 366,370c363 < if (amiga && c == '.') { < if (!local) sendbreak(); < c = 0; < } < else if (ctrl && (c == '@' || c == '`' || c == ' ')) { --- > if (ctrl && (c == '@' || c == '`' || c == ' ')) { init.c (initialize Amiga-command keys): 373c373 < FileItem[n].Width = 120; --- > FileItem[n].Width = 120+40; 392a393,401 > FileItem[2].Command = 'V'; > FileItem[3].Command = '^'; > FileItem[4].Command = 'G'; > FileItem[5].Command = 'R'; > FileItem[6].Command = 'S'; > FileItem[7].Command = 'B'; > for (n = 2; n <= 7; n++) > FileItem[n].Flags |= COMMSEQ; > 457c466 < RSItem[n].Width = 56; --- > RSItem[n].Width = 56+40; 487a497,501 > RSItem[1].Command = 'L'; > RSItem[2].Command = 'H'; > RSItem[1].Flags |= COMMSEQ; > RSItem[2].Flags |= COMMSEQ; > 506c520 < ParItem[n].Width = 56; --- > ParItem[n].Width = 56+40; 528a543,549 > ParItem[0].Command = 'X'; > ParItem[3].Command = 'E'; > ParItem[4].Command = 'O'; > ParItem[0].Flags |= COMMSEQ; > ParItem[3].Flags |= COMMSEQ; > ParItem[4].Flags |= COMMSEQ; > 548c569 < XFItem[n].Width = 80; --- > XFItem[n].Width = 80+40; 569a591,595 > XFItem[0].Command = 'I'; > XFItem[1].Command = 'T'; > XFItem[0].Flags |= COMMSEQ; > XFItem[1].Flags |= COMMSEQ; > 571,572c597,598 < XFText[0].IText = (UBYTE *)" image"; < XFText[1].IText = (UBYTE *)" CR LF"; --- > XFText[0].IText = (UBYTE *)" Image"; > XFText[1].IText = (UBYTE *)" Text "; 632c658 < UtilItem[n].Width = 88; --- > UtilItem[n].Width = 88+40; 654a681,684 > UtilItem[0].Command = '.'; > UtilItem[2].Command = 'D'; > UtilItem[0].Flags |= COMMSEQ; > UtilItem[2].Flags |= COMMSEQ; Command key summary: Amiga-V - xmodem receive ('V' toward you) Amiga-L - 1200 baud (Low) Amiga-^ - xmodem transmit ('^' from you) Amiga-H - 2400 baud (High) Amiga-G - kermit Get Amiga-X - no parity Amiga-R - kermit Receive Amiga-E - Even parity Amiga-S - kermit Send Amiga-O - Odd parity Amiga-B - kermit Bye Amiga-. - send break Amiga-I - Image transfer Amiga-D - change Directory Amiga-T - Text transfer Interesting Note: I tried assigning Amiga-N for No parity, but it is ignored by Intuition(?)! Has anyone else run into something similar to this? P.S.: Thanks Dave Wecker for a great program! /^^^/ / __/__________________________________________________ / !/ Jeffrey Jay Clesius !\ / / Raytheon Submarine Signal Division M.S. 188 !_\ /^^^/ / /! 1847 West Main Road, Portsmouth, RI 02871-1087 !/ / ^^^^ ! (401) 847-8000 (X4015) / / ! {allegra, decvax!brunix, linus} rayssd!jxc /! / !____________________________________________________/_! / / / ^^^^
cherry@husc4.harvard.edu (michael cherry) (12/07/86)
! window.c (remove Amiga-key detection): ! 261d260 ! < static int amiga = 0; ! 276d274 ! < case 103: if (++amiga > 2) amiga = 0; c = 0; break; ! 278d275 ! < case 231: if (--amiga < 0) amiga = 0; c = 0; break; Thanks to Jeffrey Clesius for these enhancements, there great!! Although you should also delete line 275 "case 102:" and line 277 "case 230:" in file window.c. This removes the solid amiga key from the switch. Mike Cherry (cherry%husc4@harvard.harvard.edu)