home bbs files messages ]

Just a sample of the Echomail archive

Cooperative anarchy at its finest, still active today. Darkrealms is the Zone 1 Hub.

   RENEGADE_BBS      Renegade Software Discussion Area      510 messages   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]

   Message 171 of 510   
   ATREYU to Ozz Nixon   
   Re: Renegade and IEMSI   
      
   
   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.   
      
   procedure IEMSI;   
   var   
     Tries:byte;   
     T1,T2:longint;   
     EMSI_IRQ:string[20];   
     Done, Success:boolean;   
     s,ISI:string;   
     c:char;   
     i:integer;   
     buffer:array[1..2048] of char;   
     buffptr:integer;   
     u:userrec;   
     NextItemPointer:integer;   
      
     function NextItem:string;   
     var s:astr;   
     begin   
       s := '';   
       while (NextItemPointer < 2048) and (buffer[NextItemPointer] <> #0) and   
         (buffer[NextItemPointer] <> '{') do   
         inc(NextItemPointer);   
      
       if (buffer[NextItemPointer] = '{') then   
         inc(NextItemPointer);   
      
       while (NextItemPointer < 2048) and (buffer[NextItemPointer] <> #0) and   
         (buffer[NextItemPointer] <> '}') do   
         begin   
           s := s + buffer[NextItemPointer];   
           inc(NextItemPointer);   
         end;   
       if (buffer[NextItemPointer] = '}') then   
         inc(NextItemPointer);   
       NextItem := s;   
     end;   
      
   begin   
     fillchar(IEMSIRec, sizeof(IEMSIRec), 0);   
     if (Speed = 0) or (not General.useIEMSI) then exit;   
      
     write('Attempting IEMSI negotiation ... ');   
     fillchar(buffer, sizeof(buffer), 0);   
     T1 := timer;   
     T2 := timer;   
     Tries := 0;   
     Done := FALSE;   
     Success := FALSE;   
     EMSI_IRQ := '**EMSI_IRQ8E08'^M^L;   
     com_flush_rx;   
     SerialOut(EMSI_IRQ);   
     s := '';   
      
     repeat   
       hangup := not com_carrier;   
       if (abs(T1 - Timer) > 2) then   
         begin   
           T1 := Timer;   
           inc(Tries);   
           if (Tries >= 2) then   
             Done := TRUE   
           else   
             begin   
               com_flush_rx;   
               SerialOut(EMSI_IRQ);   
             end;   
         end;   
       if (abs(T2 - Timer) >= 8) then   
         Done := TRUE;   
       c := cinkey;   
       if (c > #0) then   
         begin   
           if (length(s) >= 160) then   
             delete(s, 1, 120);   
           s := s + c;   
           if (pos('**EMSI_ICI', s) > 0) then   
             begin   
               delete(s, 1, pos('EMSI_ICI',s) - 1);   
               move(s[1], buffer[1], length(s));   
               buffptr := length(s);   
               T1 := Timer;   
               repeat   
                 c := cinkey;   
                 if not (c in [#0, #13]) then   
                   begin   
                     inc(buffptr);   
                     buffer[buffptr] := c;   
                   end;   
               until (hangup) or (abs(Timer - T1) > 4) or (c = ^M) or (buffptr =    
   2048);   
               s[0] := #8;   
               move(buffer[buffptr - 7], s[1], 8);   
               dec(buffptr, 8);   
               if (s = Hex(UpdateCRC32($FFFFFFFF, buffer[1], buffptr), 8)) then   
                 begin   
                   loadurec(u, 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);   
                   Tries := 0;  T1 := Timer;  s := '';   
                   repeat   
                     if (abs(Timer - T1) >= 3) then   
                       begin   
                         T1 := Timer;   
                         inc(Tries);   
                         com_flush_rx;   
                         SerialOut(ISI);   
                       end;   
                     c := cinkey;   
                     if (c > #0) then   
                       begin   
                         if (length(s) >= 160) then   
                           delete(s, 1, 120);   
                         s := s + c;   
                         if (pos('**EMSI_ACK', s) > 0) then   
                           begin   
                             com_flush_rx;   
                             com_purge_tx;   
                             Done := TRUE;   
                             Success := TRUE;   
                           end   
                         else   
                           if (pos('**EMSI_NAKEEC3', s) > 0) then   
                             begin   
                               com_flush_rx;   
                               SerialOut(ISI);   
                               inc(Tries);   
                             end;   
                       end;   
                   until (Tries >= 3) or (Done);   
                 end   
               else   
                 begin   
                   SerialOut('**EMSI_NAKEEC3');   
                   T1 := Timer;   
                 end;   
             end;   
         end;   
     until (Done) or (Hangup);   
     if (Success) then   
       begin   
         writeln('success.');   
         sl1('Successful IEMSI negotiation.');   
       end   
     else   
       writeln('failure.');   
      
     NextItemPointer := 1;   
      
     with IEMSIRec do   
       begin   
         UserName := NextItem;   
         Handle := NextItem;   
         CityState := NextItem;   
         ph := NextItem;   
         s := NextItem;   
         pw := allcaps(NextItem);   
         i := value('$'+NextItem);   
         if (i > 0) then   
           bdate := pd2date(i);   
       end;   
      
     com_flush_rx;   
      
   end;   
      
   Nick   
      
   --- Renegade vY2Ka2   
    * Origin: Joey, do you like movies about gladiators? (1:229/426)   

[   << oldest   |   < older   |   list   |   newer >   |   newest >>   ]


(c) 1994,  bbs@darkrealms.ca