Subj : Re: Renegade and IEMSI
To   : Nick Andre
From : Ozz Nixon
Date : Mon Feb 18 2019 06:18 pm

On 2019-02-18 06:40:08 +0000, Nick Andre -> Ozz Nixon said:

> On 17 Feb 19  11:10:48, Ozz Nixon said the following to All:
>
> ON> A couple nights ago, I was testing my terminal program, went to the
Telnet
> ON> Guide, and worked my way through different BBS packages.
> ON>
> ON> However, when I got to the Renegade 3 listings, two of them send the
wrong
> ON>  handshake string.
> ON>
> ON> It is supposed to be (based upon FTSC) **EMSI_REQ#### and I reply back
> ON> **EMSI_INQ####. Instead these two BBSes sent **EMSI_INQ#### ... is this a
B
> ON> or is the FTSC wrong?
>
> Good question. This is the code from Renegade Y2KA2 for EMSI.
>
>
>    write('Attempting IEMSI negotiation ... ');
>    EMSI_IRQ := '**EMSI_IRQ8E08'^M^L;
>    com_flush_rx;
>    SerialOut(EMSI_IRQ);
>          if (pos('**EMSI_ICI', s) > 0) then
>            begin
>              delete(s, 1, pos('EMSI_ICI',s) - 1);
>
>                  ISI := '{Renegade,'+ver+'}{'+General.BBSName+'}{'+u.citystate+
>                         '}{'+General.SysOpName+'}{'+Hex(getpackdatetime, 8)+
>                         '}{Live free or die!}{}{Everything!}';
>                  ISI := 'EMSI_ISI'+Hex(length(ISI), 4) + ISI;
>                  ISI := ISI + Hex(UpdateCRC32($FFFFFFFF, ISI[1],
length(ISI)),
> 8);
>                  ISI := '**' + ISI + ^M;
>                  com_flush_rx;
>                  SerialOut(ISI);

Looks like it is setup correctly, but every EMSI sample I find from the 90's
flow like, client to BBS->

begin
{ Assumes connection has been made at this point }

Tries := 0;
Repeat
  Write2Port(EMSI_INQ);  <---- just like rg's code - so they both INQ and wait
for REQ
  Delay(1000);
  Inc(Tries);
Until (Get_EMSI_REQ = True) or (Tries = 5);

If Tries = 5 then
begin
  Writeln('Host system failed to acknowledge the inquiry sequence.');
  Hangup;
  Halt;
end;

{ Used For debugging }
Writeln('Boss has acknowledged receipt of EMSI_INQ');

Send_EMSI_DAT;

Tries := 0;
Repeat
  Inc(Tries);
Until (Get_EMSI_ACK = True) or (Tries = 5);


Now looking at the specs from JoHo:
http://ftsc.org/docs/fsc-0056.001

PART II - Electronic Mail Standard Idenfitication

  Connecting two EMSI capable systems
  =====================================================================
  This assumes that the two systems are connected and that no data
  has been transmitted by the Caller.

  It should be mentioned that sending/monitoring for the "YooHoo",
  "TSYNC", and other protocol start characters is optional and not
  required for a strict EMSI implementation.

  STEP 1, EMSI INIT

      Calling system                   Answering system
  +-+-------------------------------+----------------------------------+
  :1: Send <CR> until ANY character : Send EMSI_REQ and possible       :
  : : is received.                  : banner, etc.                     :
  +-+-------------------------------+----------------------------------+
  :2: Receive banner, etc. Monitor  : Monitor line for the EMSI_INQ    :
  : : line for the EMSI_REQ         : sequence and if received,        :
  : : sequence and if received,     : attempt to handshake immediately.:
  : : transmit EMSI_INQ and attempt :                                  :
  : : to handshake immediately.     :                                  :
  +-+-------------------------------+----------------------------------+
  :3: No EMSI_REQ sequence received,: Monitor line for EMSI_INQ and    :
  : : send EMSI_INQ twice followed  : possible other protocol start    :
  : : by possible other protocol    : characters and if received,      :
  : : start characters.             : attempt to handshake immediately.:
  : :                               :                                  :
  : : Transmit <CR>                 : Go to step 3.                    :
  +-+-------------------------------+----------------------------------+
  :4: If EMSI_REQ sequence received,:
  : : send EMSI_INQ and attempt to  :
  : : handshake immediately,        :
  : : otherwise repeat step 3.      :
  +-+-------------------------------+

  In steps 1 and 2, both the Calling and Answering system terminate all
  sequences with <CR>. In step 3, the Calling system does not terminate
  sequences with <CR> as it is explicitly transmitted after possible
  protocol start characters. In step 4, the Calling system once again
  terminate all sequences with a <CR>.

and FINALLY:
  =====================================================================
  EMSI Inquiry                                    **EMSI_INQ<crc16><CR>
  ---------------------------------------------------------------------
  EMSI Inquiry is transmitted by the calling system to identify it as
  EMSI capable. If an EMSI_REQ sequence is received in response, it is
  safe to assume the answering system to be EMSI capable.

--- FMail-W32 2.0.1.4
* Origin: Modern Pascal, LLC. (1:275/362.0)