[comp.sys.amiga] VT-100 version 2.3, Fixes and Enhancements

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)