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:
A couple nights ago, I was testing my terminal program, went to the
Telnet
Guide, and worked my way through different BBS packages.
However, when I got to the Renegade 3 listings, two of them send the
wrong
handshake string.
It is supposed to be (based upon FTSC) **EMSI_REQ#### and I reply back **EMSI_INQ####. Instead these two BBSes sent **EMSI_INQ#### ... is this a
B
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)