                          SU.FIDOTECH FAQ ()

              py, y 稪 SU.FIDOTECH!
p    -  ᯨ᮪     pᮢ  ⢥⮢  
()  孮 Fidonet.
*y*,  p  p      p  ⥬,  
p    p樨,  ᮡ,  ᫨  p,   p -
  pyp . ᨡ!

᫨  y        pᠬ / 묨 ⢥⠬ -
y,  p뫠  netmail'  p      p ⢥  
y饬y.  y騩  ⠢    ᮡ  p pp  p
p᫠ p  ⢥,  ᮣᮢ뢠   p.

y騩  - Boris Ivanov, 2:5020/496.90, hexer@aha.ru
py騩 y騩  - Timur Tsyganko, 2:5020/446.

p : 20  17.04.1998

p祭 pᮢ:
1.  Q:    ᫥ p ⮣ FAQ?
2.  Q:   y  ᪮  砫 ⢥?
3.  Q:  ᠭ ⠭p fidonet?
4.  Q:  ⠪ y?
5.  Q:        netmail'  ᮮ饭      ⮢
    ᮮ饭      室  p    ⮢  p
    ᫠.    ᫠?
6.  Q:   p p⥫  y⥫  ᮮ饭 netmail?
7.  Q:   p p⥫  y⥫ ⮢ ᮮ饭?
8.  Q:    筮   -쬠   p p⥫ ⮨
    p  ⥬,    p  p襫     ⨬ 쬮,   
    p y⥫ -  ᮡ⢥ p. 祬y?
9.  Q:          p  p⥫    y⥫  ᮮ饭
    echomail?
10. Q:    FTS-0009  ᪠      MSGID   室 "valid return
    address",   p⨪  MSGID   p⮢᪨ p. 
    ?
11. Q:  祬y  pp   ᮮ饭  稢  0Dh,  
    樥 0Dh 0Ah?
12. Q:  ᨬ쭠  ᮮ饭?
13. Q:  ⠪    y뢠  ᯮ짮  ᮮ饭?
14. Q:  y p樯y ppy y p ᮮ饭  MSGID?
15. Q:  py⨭  y砭  ᨬ y  p/?
16. Q:   py ARQ?
17. Q:  ⫨ py RRQ  CFM?
18. Q:          ᮮ⭮  py Crash, Immediate, FPU,
    Direct, Hold?
19. Q:  p   fidonet?
20. Q:        y y뢠 ᬥ饭  p  p
    py TZ?
21. Q:    ᠭ p 䠩 *.PKT, *.MSG, Hudson/Squish/JAM message
    base  ..?
22. Q:   yy p樨  y 孮 Fidonet?
23. Q:  䨤 py⮢   (Product ID).   뤠   
    ?
24. Q: ᮢy py -y   p  MSGID.
25. Q:      Fossil      p  57600   115200,  
    ⠭p p ⮫쪮 38400  ᨬy?
26. Q:  p outbound y BinkleyStyle-p?
27. Q:  ⫨砥 ZModem  DirZap  ZedZap?
28. Q:  pp⭮ y 쬮  JAM-?
29. Q:  ᠭ p TIC-䠩?
30. Q: Hy   pp   p / unix-p?

/---------------------------------------------------------------------/

>[1] Q:    ᫥ p ⮣ FAQ?

A: (BI)

  - FAQ p     ⢥p 頥  p
SU.FIDOTECH.  p - http://www.aha.ru/~hexer/fido.htm.

/------/

>[2] Q:   y  ᪮  砫 ⢥?

A: (TT, BI)

 ᮪p饭   , ᠢ ⢥:
   AS  - Alex Semenyaka, 2:461/64
   DM  - Dima Maloff, 2:5047/13
   DP  - Dmitry Provodnikov, 2:5000/47.7
   DtZ - Dmitry the Zuryanovich, 2:5020/730
   JF  - Jury Fradkin, 2:5030/339
   JG  - John Gladkih, 2:5051/16
   PG  - Pavel Gulchouck, 2:463/68
   PK  - Pete Kvitek, 2:5020/6
   st  - serge terekhov, 2:5000/13
   TT  - Timur Tsyganko, 2:5020/446, 訩 2:461/10
   BI  - Boris Ivanov, 2:5020/496.90

/------/

>[3] Q:  ᠭ ⠭p fidonet?

A: a) (TT)

H    y  fidonet  䠩   FTS-xxxx.*  FSC-xxxx.*.
p   -  ᮡ⢥  ⠭p,  p  -  p    ⠭p⠬.
yy 7 ⠭p⮢:

   FTS-0001 A basic FidoNet(r) technical standard, R Bush
   FTS-0004 Echomail specification, B Hartman
   FTS-0005 The distribution nodelist,  B Baker, R Moore
   FTS-0006 YOOHOO and YOOHOO/2U2, V Perriello
   FTS-0007 SEAlink protocol extension, P Becker
   FTS-0008 Bark file-request protocol extension, P Becker
   FTS-0009 Message identification and reply linkage, j nutt

  80 p.  p  :

   FSC-0004 Zones and Zonegates explained primitively, R Bush
   FSC-0015 FOSSIL 5.0 Documentation, R Moore
   FSC-0020 Alternate Nodelist Flag Proposal M Presnell
   FSC-0031 Proposed message id/linkage standard, M Ratledge
   FSC-0034 Gateways to and from FidoNet, R Bush
   FSC-0035 Transparent gateways to/from FidoNet, M Shiels
   FSC-0038 Proposed domain gating protocol, j nutt
   FSC-0039 A type-2 packet extension proposal, M Howard
   FSC-0043 Some hints on recognizing control lines in FidoNet(r) message
            text, R Bush
   FSC-0044 Improved duplicate detection, J Decker
   FSC-0045 Proposed new packet header, T Henderson
   FSC-0046 Proposed product identifier, J Homrighausen
   FSC-0047 The ^ASPLIT kludge line, P Terry
   FSC-0048 Proposed type-2 packet extension, J Vroonhof
   FSC-0052 A proposal for making the PATH zone aware, G van der Land
   FSC-0053 Specifications for the ^aFLAGS field, J Homrighausen
   FSC-0054 The CHARSET proposal, D McNutt
   FSC-0056 EMSI/IEMSI Protocol Definition, J Homrighausen
   FSC-0060 Calculation and Usage of CRC's, F van der Loos
   FSC-0062 Nodelist Flag Indicating Online Times, D Thomas
   FSC-0072 The HYDRA file transfer protocol, J Homrighausen, A Lentz
   FSC-0087 File forwarding in FidoNet technology networks, R.Williamson
   FSC-0090 FTSC Product Codes and Application Form

筮  p冷      䠩  FTSCLIST  -   ᯨ᮪ FTS  FSC, 
FTSCPROD - ᯨ᮪ 䨪p pp py⮢  fidonet.

p  ᯮ짮  FTS    FSC  y,     pᯮ "ᢥ"
pﬨ.  ᫥  p  y  ftp.fidonet.org  ftp.funet.fi.
᫨    py  y  ᫥  FSC  -  p   
  p樨 NET_DEV  FTSC.

A: b) (PG)

p筨 - ftp://ftp.blaze.net.au/pub/ftsc/ -  ᠩ Hy ( 
 -py᪨ ?).

/------/

>[4] Q:  ⠪ y?

A: a) (TT)

  p    ⥫  ᮮ饭,  ᮤp  孨y p. ⮡
⫨  p  y  (kludge)    ᮡ⢥ ⥪  稭 
ᨬ 01h,  ᪫祭 p "AREA:"  "SEEN-BY:"; p  
FTS-0004    FSC-0043.  饯p,   y砥 p宦 p樨 
y   筮  ᮮ饭, pp  y.

A: b) (PK)

  ᮬ   y AREA: --    ,  筮  
01h      p.         BADMSG,   . p ⮣,
  py, ⮡    y砥  ᠬ p y, ᮡ
 .

A: c) (AS)

p  p  宯    ,  y  "AREA:" 筮 y, ⠪ 
p⠣  筮  (筮)  p  ⠫ (
p  *.MSG),  䠩 (JAM, Squich)  p  (Hudson).
y  "AREA:"  筮  p      dupe-  bad-ᮮ饭  
  carbon copy - ..   ,  y 室 ᮮ饭 
p p権.

/------/

>[5]  Q:        netmail'  ᮮ饭    ⮢
>ᮮ饭    室 p   ⮢  p ᫠.
>   ᫠?

A: a) (TT)

,  ⠭p FTS-0001   ᫥ p (015  016)   ᥩ 
䠪᪨    y    ⢨.    p樨  012  FTS-0001   
ᯮ짮   p p ᠭ  p p ᮮ饭
  p  MS  DOS directory entry.   p  pp ᯥ祭
fidonet p p /⮢  py 筨 (.). Hp
pp  py  y    䨣yppy  - ᮧ ᮮ饭 
⠭p   FTS-0001   (   p     뢠    y  "Fido
compatibility"    "FTS-0001  compatibility")     p p (
p  뢠  y "Opus compatibility").

A: b) (AS)

쭮   (GoldEd, FD/FM,  FastEcho  p p) p ⠬ y 
p  file  entry,      ⠪  ,      p   
pp. H 直 y砩,   p, ⮢ p᪫:

31                              23                              16
Ŀ
  Y   E   A   R  -  8   0   M  O  N  T  H      D   A   Y     


15                              7                               0
Ŀ
   H   O   U   R      M  I  N  U  T  E     S E C O N D S / 2 


p ⮬ ᭠砫 p p襥 ᫮, ⮬ 襥 ( - p, 
⠭p⭮  PC p浪: ᭠砫 訩, ⮬ p訩).

pp: y᮪ 

0000b0 | 73 21 7d 9e

ᮮ⢥y file entry date 21739e7d,
0010 0001 0111 0011 1001 1110 0111 1101,  :

:    0010000 = 16, 16+80=96
:  1101 = 11, Hp
:   10011 = 19
:    10011 = 19
y: 1100011 = 51
ᥪy:11101 = 29, 1+29*2=59

⮣, ᮮ饭 ᠭ 19 p 1996,  19:51:59.

  p      pkt  (p    p)  -   
筮.  Hy,    讥  砭  -    p ᥬ 
p ᮢ, ⮬, p /p, ᫥  .


>[6] Q:   p p⥫  y⥫  ᮮ饭 netmail?

A: a) (TT)

᫨    y  DOMAIN  -    . ᫨   -  y INTL,
FMPT,  TOPT.  ᫨ p ⥩  y    p - 쬨 
  筮  ᮮ饭. ᫨  p⥫   p,
    y    ⮢p 筨 p樨,  p
⭮:
   - p      p    MSGID,  ᫨  ⠬ 筮  FTN-p
     (.).      ᫨ ⠪,  MSGID  ᮤp   p
     p襩  ⥬  (originating  node)     p,  p
     p ⥫  y ⢥;
   - p      筮    (祬y ⠬    
     p  ⠩ );
   - p  /᭮/p p 襩 ⥬;
   - p    p y Via. ,   䠪,   p
     y  p⠢      p襩  ⥬   䠪,  ⠬
     y      p         ⮩   ,    p  
     ppp 쬮.
  p      y  pp 稥   y 
ᮮ⢥y  p  ⥩. Hpp,  1    5020,   2
 ⠪   :-)   pp  ᮯ :-)

᫨  p    y⥫      p,    p py 
p⥫.

A: b) (st)

y   y ᪨ pᮢ -   pp⭥ 뫮 ,
y      ᠫ    ᥢ.  p,  ,  墠,  FAQ
⠢  -  ...  y     - ᫨  - p,   p yy.
y -  p᭠ y ⠪ p쭠 pyp ⮣ .

// Decode FTN netmail message from/to addresses in pseudo-C
// Version 1.0, by serge terekhov, 2:5000/13@fidonet

// ================
// reading .pkt or .msg

// we have:
//    pkt.from + pkt.to (OPTIONAL - when unpacking .pkt)
//    msg.from.node/net + msg.to.node/net (REQUIRED)
//    kludges: intl/fmpt/topt/msgid (OPTIONAL)
// return:
//    from
//    to
//    real_to (only if zonegating)
//    zonegate (YES/NO)

   from.zone = -1
   from.net = msg.from.net
   from.node = msg.from.node
   if (FMPT)
      from.point = fmpt
   else
      from.point = 0

   to.zone = -1
   to.net = msg.to.net
   to.node = msg.to.node
   if (TOPT)
      to.point = topt
   else
      to.point = 0

   zonegate = NO

   if (INTL) {
      have_intl = YES
      from.zone = intl.from.zone
      from.net = intl.from.net
      from.node = intl.from.node
      if (to.net == intl.to.net && to.node == intl.to.node) {
         to.zone = intl.to.zone
      } else {
         zonegate = YES
         real_to.zone = intl.to.zone
         real_to.net = intl.to.net
         real_to.node = intl.to.node
         real_to.point = to.point
         to.zone = from.zone  // zonegate is in our zone...
         to.point = 0
      }
   } else {
      have_intl = NO
      if (MSGID && we can decode ftn address from it &&
            msgid.net == from.net && msgid.node == from.node &&
               msgid.point == from.point) {
         from.zone = msgid.zone
      } else {
         // any other heuristics?
      }
   }

   if (from.zone == -1) {
      if (have pkt && pkt.from.zone != 0)
         // last resort.. seems reasonable.
         from.zone = pkt.from.zone
      else
         from.zone = default_zone   // i.e. from our first AKA
   }

   if (to.zone == -1)
      to.zone = from.zone

// ================
// generating output pkt

   msg.from.net = from.net
   msg.from.node = from.node
   msg.to.net = to.net
   msg.to.node = to.node
   if (from.point)
      put FMPT from.point
   if (to.point)
      put TOPT to.point
   if (have_intl || readressing done) {
      if (zonegate)
         put INTL real_to from
      else
         put INTL to from
   }

// ================
// EOF

/------/

>[7] Q:   p p⥫  y⥫ ⮢ ᮮ饭?

A: (TT)

Hp   ⥩/y      p⥫    y⥫  室    ⠬
p    FTS-0001.  p p   ⮢ 室
p  ⨯  ;  筮  ᯮy  ⠪ 뢠 
"2+",  ᮢ⨬   FTS-0001 - . FSC-0039  FSC-0048,   ᠭ 
pᯮ  ᮮ⢥y騥          室 p
/.
yy        p쭮  ⫨騥  p,  ᮢ⨬ 
FTS-0001 - FSC-0045, FSC-0065/0066, FSC-0077, FSC-0079, FSC-0081, FSC-0082,
 p ppp   y稫.

/------/

>[8]  Q:   筮  -쬠   p p⥫ ⮨
>p  ⥬,   p p襫   ⨬ 쬮,    p
>y⥫ -  ᮡ⢥ p. 祬y?

A: (TT)

  p쭮.  - ,  fidonet ⮫쪮 稭,  
   뫮 ⠪ ⨩  ,   MSGID, ⮣ 宬  ᫥
ppp  祭  室  netmail  ⫨砫   ⮫쪮 ᠬ
p   cp  AREA:<>    p  -pp    p
echomail  饣   ᥬ 䮫p. p p ᥬ -pp
p⠢ ᢮ p  p p⥫  p downlink'  p
y⥫    y뢠    쬠    騩  netmail'  echomail'
䮫p.

    p  p⨥ netmail  echomail 諮 p묨 yﬨ,  砫
p樯  ⠫  p  -    p       ⠪  y뢠
uplink'  downlink'.

/------/

>[9]  Q:          p  p⥫  y⥫  ᮮ饭
>echomail?

A: a) (TT)

.  FTS-0004  -      origin'  ᪮ y p p⥫. H
y p -  ᮯ py ⠭p, ⠪   ᪮ ⮨
-  ⨯  (᭮  zzz:nnn/fff[.ppp][@domain]). H,  p p,
py    :-)

  ᪮-y ⮢p 筨 p y⥫  -ᮮ饭
.  (y REPLY ᮤp  p y⥫,  p ⥬  ⢥ 
쬮  p ᠭ  ᮮ饭 -   ᮢᥬ    ⮦!).

A: b) (JF)

IMHO,  ᫨  MSGID          p  FTN-p,     p
pp⭥ p  p. Hpp, p ⮢  FTN-ᮢ⨬
⮪    ⠢  p p ,    MSGID y 室
p    FTN-⪥.  ᫨    MSGID  ⮨ p᪨ p,  py
⢥  p  訩 ⬥  (᫨  p   䨣
pp),      ᫠  쬮  p  -p    , y 
p.

,    ⠭p    -  FTN-p  MSGID   p
p    ᫥.    p    p  쬮 
py py. :(

  ,  ⠭p⭠    - p 쬮  䠩, ⮬ ⠢
䠩   py 쬮. p  p p 쬮  py py.
 py  MSGID p p,   p - .   /
⠪ 쬠 p.

/------/

>[10]  Q:    FTS-0009  ᪠    MSGID  室 "valid return
>address",      p⨪  MSGID   p⮢᪨ p. 
>?

A: a) (TT)

 FTS-0009 ᪠:

     "valid return address for the originating network"

     (⢨⥫  (p騩,  騩  ᨫy, p) p p
      p襩 )

  p⮢᪨ p y⢮p ⮬y p  y p
zzz:ppp/fff.nnn  -    _᢮_    ⢨⥫ p.  y,
  p    msgid  y  ⮫쪮  ᯥ祭 y쭮 - p
⥬   y   p    p  p,      ᥣ
⫨  pᠬ.  ᫨      y   py,  p
  ᫥y騥 p:

     If  the  originating  address is enclosed in double-quotes, the entire
     string between the beginning and ending double-quotes is considered to
     be  the  orginating  address. A double-quote character within a quoted
     address is represented by by two consecutive double-quote characters.

     (᫨  室騩  p  祭    窨,      p  y
     p뢠饩    p뢠饩  窠  ⠥  室騬  pᮬ.
     窨  "祭" p p⠢ y ᫥⥫묨
     窠)

  py ᭨ ᠬy ᥡ -   ftn-p  ᮤp 
ᥡ 窨? :-)

   y砥 ⮨   p쭮,    y饭...

A: b) (PG)

p:    裡   ⥬,   짮⥫᪨ ⥬ (multiline
BBS,  unix) p樥 y쭮 ID    pp (),
  MSGID,  p,    p p⥫,  p ⥬
-  3d-5d  p (__ username)  FTN, p  (__ username) 
internet  ..

/------/

>[11]  Q: 祬y pp  ᮮ饭  稢  0Dh,  
>樥 0Dh 0Ah?

A: (TT)

. FTS-0001 - pp 稢  0Dh.  0Ah  ᯮy 
 pp.

/------/

>[12] Q:  ᨬ쭠  ᮮ饭?

A: (TT)

⠭p       p.  p᪨    ᮢp  pp
y᪠  y  ᮮ饭      64KB,      ᮢ⨬  
ᯮy騬  p묨  pp    py    ᮮ饭
 12KB.

>[13] Q:  ⠪    y뢠  ᯮ짮  ᮮ饭?

A: (TT)

.  FSC-0004.  p -    fidonet yy ᯥ樠 y
()    p뫪  ᥬ    py .   <z1>  <z2>
   p   <z1>:<z1>/<z2>.   쬮    y  <z1>:<n1>/<f1>    yy
<z2>:<n2>/<f2>,  pᮢ  p  ,    筮 
p  /y  y⥫    <n2>/<f2>,      뫮   p pאַ
p樨,  <z1>/<z2>.

/------/

>[14] Q:  y p樯y ppy y p ᮮ饭  MSGID?

A: a) (TT)

p FTS-0009:

     no  two  messages  from a given system may have the same serial number
     within  a  three  years.  The  manner  in  which this serial number is
     generated is left to the implementor.

     (        ᮮ饭   ⥬  
     p浪  p  祭 3 . ⮤,  py  p浪
     p ppy, ⠢  yᬮp pp).

H p ppp 訡 - p  ⢥ p浪 p
p  p unix - p騥 ⠪ p pp  
MSGID, ᫨ y  y᪠ p室  ᥪy.

A: b) (PK)

    y     p y祪 ᥢ  p p⠡쭮 ,
pp     p p 388   饭   맮
yp  p:

/*
 * This subroutine makes up an ascending unique ^aMSGID stamp
 */

  static ULONG DoMakeMSGIDStamp(void)
  {
    static ULONG lStampPrev;
    ULONG lStamp, lSecs, lHund, lSecStart = (ULONG) time(NULL);
#ifdef __OS2__
    static BOOL fInfoSeg = FALSE;
    static PGINFOSEG pgis;
    static PLINFOSEG plis;
    SEL selgis, sellis;
#else
    union REGS regs;
#endif

    // Under OS2 get pointers to the global and local info segments once

#ifdef __OS2__
    if (!fInfoSeg) {
      DosGetInfoSeg(&selgis, &sellis);
      pgis = MAKEPGINFOSEG(selgis);
      plis = MAKEPLINFOSEG(sellis);
      fInfoSeg = TRUE;
    }
#endif

    // Make up time stamp out of number of seconds since Jan 1, 1970
    // shifted 7 bits to the left OR'ed with current system clock and
    // loop untill we get a new stamp

    do {
#ifdef __OS2__
      lSecs = (ULONG) pgis->time;
      lHund = (ULONG) pgis->hundredths;
      DosSleep(0);
#else
      lSecs = (ULONG) time(NULL);
      regs.h.ah = 0x2c; intdos(&regs, &regs);
      lHund = (ULONG) regs.h.dl;
#endif
      lStamp = (lSecs << 7) | (lHund & 0x07f);
    } while ((lStampPrev >= lStamp) && ((ULONG) time(NULL) < lSecStart + 5));

    // Check if we finally have unique ascending ^aMSGID kludge stamp and
    // if not, use incremented largest stamp value

    if (lStampPrev >= lStamp) lStamp = lStampPrev + 1;

    return lStampPrev = lStamp;
  }

/------/

>[15] Q:  py⨭  y砭  ᨬ y  p/?

A: (TT)

Hᨬ y H  py⨭  y砭. . FTS-0005.

/------/

>[16] Q:   py ARQ?

A: (TT)

⠭p  䠪᪨    p  ARQ.  ᫮襩 ( p
p  +7fido) p⨪  py p訢 ⢥p p.

/------/

>[17] Q:  ⫨ py RRQ  CFM?

A: (TT)

p  -  p  ⢥p  ⠢,  p  - p ⢥p
p⥭.

/------/

>[18]  Q:        ᮮ⭮ py Crash, Immediate, FPU,
>Direct, Hold?

A: (TT)

Crash
        pp⭠  p. 筮 pp뢠 ⢨ p⨢ Hold 
        p ᮡ⨩ p -   p樨.
Immediate
        H p.  p pp뢠 p⨢ Hold, 
        pp뢠    祭    py  p p
        ⠭樨  p⥫ / y⥫,  py Direct -
            p樨.    pᬠp  Crash 
         Crash+Direct.
FPU
        H  p      p祭.  pp뢠  Hold,
        p p, py Direct.
Direct
        p py.
Hold
        p  ⮫쪮  p  室饬  .  y  py
        Direct.

yy  ,     py⮢ (p⨢p稢) Crash+Hold
  pyy Direct. H ᮢᥬ ⭮, 祬 ⠪ ᫮, 
p  pp,    p᫮y squish, ⠪ . H 
ᮡ :-)

/------/

>[19] Q:  p   fidonet?

A: (TT)

p᪨  .   pp ᯥ祭,  
p饣   5d-p,    y  ⮫쪮    y    
'@fidonet'    襬y  py    MSGID. ,  饬,   y⥫쭮 p
稨  ᪮쪨  ᪫  p,        p
(?)    ⠭p⮬. Hpp,   p ᭮  뢠
  ᠬ  fidonet  -  "fidonet"   "fidonet.org" :-( , p
  5  , 祬 y p p...

/------/

>[20]  Q:     y y뢠 ᬥ饭  p  p
>py TZ?

A: (TT)

  ⫨稨  p unix', y p pp  MS DOS   
   .  pp py  "-" (SET TZ=MSK-3MSD), py -
  "+"  (SET  TZ=MSK+3MSD),  p  p  p訫,     
    TZ p ,  ⠢ 짮⥫ y뢠
ᬥ饭    p    䨣yp樨    ⮬  ,        ᠬ
p.

   HO,         pp  pp⭮  p    p⮬
TZ=MSK-3MSD.

/------/

>[21] Q:  ᠭ p 䠩 *.PKT, *.MSG, Hudson/Squish/JAM message
>base  ..?

A: (TT)

p  *.MSG    *.PKT  ᠭ   FTS-0001,   ᪮쪮 p室 
pﬨ  -  ⠩  ᮮ⢥y騥 p  ⢥. p HMB ᠭ 
䠩,  p    py⨢  Quick  BBS  Remote Access. p
Squish    JAM  ᠭ      API  (MSGAPI10.*  JAMAPI10.*). p ⮣,
yy    pp  ⥪    p c ᮮ饭ﬨ. 
Turbo  Pascal,  pp,  yy 祭  (p,  ꥪ⭠)
⥪:

MKSM106.ARJ - MK message access library v1.06 source code

p  ⮣,      pp  yy  ᮡ⢥  ᯥ᪨
⥪.  Hpp: T-Mail API, FrontDoor Developers Kit, Developers Kit
for GEcho, FastEcho configuration file headers  ..

쬠 p⭮,  p p   䠩 y y y
 p SU.MAILER  RU.ECHOPROCESSORS...

/------/

>[22] Q:   yy p樨  y 孮 Fidonet?

A: a) (TT)

SU.MAILER              - p
RU.ECHOPROCESSORS      - 宯pp
RU.FILOEECHOPROCESSORS - 䠩宯pp
RU.NETWORKS            - ⥢ 孮  饬 ( LAN!)
FIDO.ANYWHERE          - p  FTN  PC-p
UA.FIDOTECH            - yp᪠   孮 Fidonet
DIG.FIDOTECH           -  -   孮 Fidonet

p  ⮣,  yy  ⢮  p権    ⤥ pp
py⠬ Fidonet.

A: b) (DP)

DIG.FIDOTECH  -      FTN    5005.  yy. pp
py  p権  DIG.*  -  Vsevolod  Fedotov  (ᥢ  ⮢) p
pp: 2:5005/2@fidonet

A: c) (AS)

R50.TSC ...  p - 뢠,  ,  ...

A: d) (Amir Shabashvili, 2:5049/12)

   ru.fido.nextgen,   饭   y   /p
p樯   y樮p   fidonet.   yy  .     
⪥,  py  ⠬  .  H - . p ⮣, p  
y  su.ip.sysop.

A: e) (BI)

    y  pᮢ  孮  p⪨ ⬥ yy
RU.NETMGR.   p  p  p権  ᮢ饭      p
孮 y  SU.IP.SYSOP, SU.IP.POINT  SU.IP.SYSOP.DNS.

/------/

>[23]  Q:   䨤 py⮢   (Product ID).   뤠  
> ?

A: (TT)

p楤yp      p    ᠭ    FSC-0090.    뤠  
p   䠩 FTSCPROD.*, p   p冷  FTS  FSC 
 y.

/------/

>[24] Q: ᮢy py -y   p  MSGID.

A: (st)

y CRC y,   ⠬

_ _ _ O / _ _ C_U_T_ H_E_R_E_ _ _ _
      O \
#define POLY 0x48000000L

static long CrcTable[128];

static void crcinit (void)
{
   int i, j;
   long sum;

   for (i = 0; i < 128; ++i) {
      sum = 0;
      for (j = 7 - 1; j >= 0; --j)
         if (i & (1 << j))
            sum ^= POLY >> j;
      CrcTable[i] = sum;
   }
}

/* Honeyman's nice hashing function
 */
static long hash (register char *name, register int size)
{
   register long sum;

   if (size <= 0)
      return 0;

   sum = CrcTable[*name++ & 0x7f];

   while (--size)
      sum = (sum >> 7) ^ CrcTable[((char)sum ^ *name++) & 0x7f];

   return (sum);
}
_ _ _ O / _ _ C_U_T_ H_E_R_E_ _ _ _
      O \

>[25]  Q:      Fossil   p  57600   115200,  
>⠭p p ⮫쪮 38400  ᨬy?

A: (Roman Trunov, 2:5022/2)

⥫ y樨,  y  ᠭ.    p ᨫ
   p.   Hpp,   뫠    y    t-mail',    
  窨    y  ᪮p,  ,     readme 뫮 ⪮
ᠭ,    쭠  p  X00    ⮣ py,   p
y  p  "      y   2400 ᮥ"... p⭮ 
 y  X00.

>[26] Q:  p outbound y BinkleyStyle-p?

p  (TT):    饬,    p    ⥬⨪ SU.MAILER, 
⢥    p⠢ p  pp ppp p⭮
p樨 FTN.

A: a) (DM)

 y y pp. ᫨  p z:n/n.p@domain,   
    䠩,  ⭮騥    y  p  z:*/*@domain. 
⠪  䠩      y     p ⭠p p,
筮        p  y  (   , 祢, .
⮢  p    y).  pp  ᨬ  ⨯
䠩 y  ⠪:

   .?lo -- 䠩,  p   p   䠩, p祭
     p    yy  設y,    y. ᫨ y  䠩 
   ,    ⭮⥫  (..    y  y ᪠   
   p   "/"    "\"    砫)          
   pp. p  䠩     ᨬ -- `^', `#'
     `~'.  `^'  --  y    䠩 ᫥ yᯥ譮 뫪, `#' --
   p   y , `~' -- pp ⥪  ⨬ ᨬ.
     p    y  ᫠ 䠩. ᫨  p  .?lo-誥
   y    稭    `~'  --        py  ⮩
   ᮢ.

   .?ut  --  type-1  (2,  2+)      ⮩,  p  y  y᫠ 
   ᮮ⢥y騩  p.  p 뫪 y pᢠ y砩 
    pp ".pkt".    pᨪ   y  y i,
   c,  f(o),  d,  h,   ᮮ⢥y py  -- immediate, crash,
   normal,  direct    hold.  p  "normal"   襪, ᮮ⢥⢥,
   ᨬpy pp ".flo",   ⮢ -- ".out".

   .req   --   ⭮,   ᯨ᮪   䠩    p.  H    p:
   "filename_!password",    password, 祢, p,  `_' -- p.
   ;)    p   p ⮢ ᨨ  yy 設y, y 
   p뢠  p믠     䠩. :-/

   xxxxyyyy.bsy --  䫠 .   易⥫쭮 ᮧ p
    p樥  䠩 xxxxyyyy.*

   .pnt  --    pp,   py    ⮢ 
   y.         ⢥  ⭠p
   p   ,      쬨  ᨬ  yﬨ,      
   pp -- ?lo, ?ut, req  bsy.

᫨  py  ᫠ y  pyy y,  ᮧ ⠫  
   y      outbound-    pp    .xxx,    .xxx  --
⭠p p  祭.

 뫪     py   ⮩  pp   
   outbound     outbound-  ᥤ    ᮧ  ⠫  
"domain.xxx",    xxx,   筮, p      "domain".
Hpp,  ᫨   ᭮ outbound   ⠫ c:\BBS\outbound, 
p        y    4:3/2.1@Testnet           䠩      
c:\BBS\Testnet.004\00030002.pnt\00000001.req

A: b) (DtZ)

᪠    奬:  outbound  稬    %OUT%.    ⮩
pp  pp.
   * p. CTL-file -  ᯨ᮪ 䠩 ( p, p 
   * 祩), p  ᫠ y⥫. (⤥쭮 ᬮp p ⬥)
 ,  CTL-file (%04H%04H.%clo) net,node,flavour (,  Crash
5020/730 139C02DA.CLO).
 , (%04H%04H.PNT\%08H.%clo) net,node,point,flavour ( Hold
5020/730.43 139C02DA.PNT\0000002B.HLO).
p CTLFile:
    <modifyer><-䠩--᫠>\n
    <modifyer> (樮쭮): ^ - KillSend, # - Truncuate Send

pp:      宫    宬  , 祭 䠩 
  (p  ⬥    饬  y砥  ᬮp  ,    ᠣ-
H   CTL 䠩).
    #E:\HOST\OUT\89098354.MO0
    #E:\HOST\OUT\89098354.MO1
    C:\CONFIG.SYS
    ^E:\HOST\OUT\13FE0065.PKT

y⨬ p:
    H)old C)rash I)mmidate D)irect F) normal (notice: .flo, not .nlo)

H
  ⬥  .PKT  䠩  ppy    ⥬  p樯,  
pp  .%cUT  Flavour  (⮫쪮   normal ⥯p y y O -  ,
normal ⬥  pp .OUT).
H⬥,  騩    y⡠y ⠪ p, H H -   CTLfile
  H H. H⬥ p ᨨ p뢠  .PKT p.

-
ppy    ⮬y    p樯y,    pp .REQ.  p樯 
p祭  (    BrakyTerme,  pp,     ⠪,  ,  
p쭮).  p  Bink #23  ᥣ p  Normal. , 
    BT+  -  ⠥    .REQ     ⮡   p
p  ᮧ y⮩ CTL 䠩  y 䫥p.
p .Req 䠩:
     <_>\n
     <_>\n
      ..
y⢥: 뢠  pﬨ, y   䠩 p  p
 !,  p, Case Sensitive.
y⢥:  뢠    Update  Request.  p   p
pyp. H: Update Request    pﬨ 뢠 :-)
ᮡ:  p樯,  Bark (᫨   訡) 䠩p⠬ p
p  뫠      <net><node>.REQ.   - p. p
p⪥  室饣  p   p뢠 __ p襤訥 .REQ 䠩, 
  ⠪  y.  The Brake!  䨣yp쭮.

H H
p  Default  OutBound,  p (?) ᥣ ᮢ  Main Aka
p,  p   ⬥p, yy Outbound  py , 
p  -  pp  pp, pp %OUT%.38D (y⡠y  
909)

H H
OutBound  p .

.BSY 
  p/p/p/  py pᮢ ⮬,
p騬          pᮬ   ᠭy  CTL p樯y 
pp  .BSY. ᫨ yy .BSY 䫠 -   CTL  ⬥
p頥 _ᮢᥬ_. Hpp, ᫨ p ᫥ p宦 EMSI ᭨,
     AKA , ⮨ p  (  ⮫쪮 exclude aka, 
 y ⥬y   ᯮp).
p訩  ⮭  -  ⠢  ᥪy  y .BSY 䠩  p   ᮧ襩.
yyp  p  ᮧ  .BSY:  ᮧ  䠩    pp .%X03X
p    p  .BSY. ᫨ ᫥ ⮣ 䠩 .%X03X
p    p  y⢮  -  p   ,  p
.

 

    .  Bink  ᮧ  .$$$  (    ⠬?)   p樥 
Call/Session,  The  Brake! ᮧ .TRY  p樥  ᫥ ,
BrakyTerm  (y)  ᮧ .%cRQ Flavour - p  p pp
 ..

A: c) (PG)

  ⢥    p  ᪮쪮 p⨢p稩, 易  ⥬, 
pp  y      䠩    ᥣ  ppy,  䠩 *.CUT 
*.cut -  p 䠩  饬 y砥. H᪮쪮  ,  ᨬ쭮
ᮢ⨬    ⠪  y樨  ᥣ  y  ᯮ짮 p ᮧ
䠩 ᨬ  pp,  p ⥭ ᪠   p
(pp,   regexp   ".*\.[Cc][Ll][Oo]").             
pp  p,  ᮧ p p.

/------/

>[27] Q:  ⫨砥 ZModem  DirZap  ZedZap?

A: a) (st)

1) zmodem - p  y ;)
2)  ZedZap  -  ᨬ  pp    y祭  1  8,  ⠪ 
᪨   p 
3)  DirZap  -  ZedZap,  p p p ᪥ ⮫쪮   -
DLE,    ᪥ xon, xof, xon|0x80, xof|0x80, cr (᫥ ᮡ)

A: b) (JG)

Zmodem  -      1k,  ZedZap    8K,  DirZap  -  ZedZap   ⨭
yp.ᨬ.  ⠪:

void ZMOSendByte( register byte c )
{
  static byte lastsent( 0 );

  switch( c )
  {
  case 015:
  case 0215:

    if( (lastsent & 0x7F) != '@' )
      goto SendIt;

  case 021:
  case 023:
  case 0221:
  case 0223:
  case 020:
  case 0220:
  case ZDLE|0x80:

    if( waZooType==DirZap )
      goto SendIt;

  case ZDLE:
    comPort->bufferByte( ZDLE );
    c ^= 0x40;

  default:
SendIt:
    comPort->bufferByte( lastsent = c );
  }
}

/------/

>[28] Q:  pp⭮ y 쬮  JAM-?

A: (TT)

1)  砥  쬮  y (y⠭  MSG_DELETED  );
2)  y  ᮮ饭    reply-chain;  3)  y稢    1  稪
modcounter.

p  2): 뫪   ᮮ饭 y 室 :
   - 楯窥  ⢥⮢     - pp  Reply1st  ᫨ ⠬  0, 
     p  楯窥 ReplyNext  y ReplyTo;
   - py饬      楯窥 ⢥⮢ - pp  ReplyTo  ᫨
     ⠬    0,     뫪  室 ᮮ饭. p  室
     ᮮ饭  ( Reply1st)  楯窥 ⢥⮢ ( ReplyNext)  y
       ᮮ饭    楯窨.  ,   ᮮ饭  
     p  楯窥 ⢥⮢.
   - ᫨      ReplyTo   0,  ᮮ饭,  p  y뢠, 
       Reply1st  ᮤp 0,   -    subject (y⨫
     JAM-LINK    筠)  室 ᪫  ᮮ饭 
     楯窨,  易  ﬨ ReplyTo ( y py)  ReplyNext (
     y).

   - ᫨   pp ᥬ - p  - Reply-.
FEUTIL  ⠪    .    p樯      祣   -
pp    ᠬ  pp,    ⠫        
y⢥.

H맢  GoldED    p    p  "Hard  Delete", py
y:

    JAMHARDDELETE <yes/no>  (no)

     The  default  setting  makes  GoldED  conform to the JAMAPI specs when
     deleting  msgs  in JAM msgbases. This means that deleted msgs are only
     marked  as  such in the message header, not in the index. As a result,
     GoldED  will find and display the deleted msgs until you run a message
     pack utility to physically remove the deleted msgs.

     If  JAMHARDDELETE  is set to Yes, GoldED will zap the reference to the
     message  in  the  index  when deleting msgs. This way the deleted msgs
     will not show up again later. The drawback of this approach is that it
     is  hard  to  undelete msgs, and may break other software which assume
     100%  to-the-letter  conformance  to the specs. Note however, that the
     hard-delete  method  is  transparent  to  normal  use of JAM msgbases.
     Probably the only software that might break are undelete utilities.

     For  the  techies  and  programmers,  the hard-delete method is simply
     setting  both  UserCRC  and  HdrOffset  in  the  index  to  0xFFFFFFFF
     instead of only the UserCRC. According to the JAMAPI specs, a value of
     0xFFFFFFFF   in  HdrOffset  means  that  "there  is  no  corresponding
     message header". Sounds remarkably like a deleted msg, right? :-)

祢, ᫨ ᯮy ⠪ ⮤,  ⥫쭮: 4) y蠥 
1  稪 activemsgs; 5) pppy p 室 (᫨  y
ᮮ饭  ⠪ p) basemsgnum.

p    5):  ᮮ饭    lowest  message  number  ᮢp襭  
易⥫쭮  y  p  -  ᬮp p "Updating message headers". ,
py,  basemsgnum  y p py  1.


>[29] Q:  ᠭ p TIC-䠩

A:

FSC-0087

/------/

>[30] Q: Hy   pp   p / unix-p.

A: (st)

_ _ _ O / _ _ C_U_T_ H_E_R_E_ _ _ _
      O \
/*
 *    Convert MSDOS file timestamp to/from UNIX time, portable
 *    NOTE: no timezone conversions here!
 *
 *    This code is in public domain.
 *
 *    Written by serge terekhov (2:5000/13@fidonet)
 *
 */

/*
 *    This module gives you two simple entries:
 */

unsigned long ToUnixTime (void *dostime);
void FromUnixTime (unsigned long unix, void *ret);


/*
 *    MS-DOS file timestamp structure, used as reference and in TEST
 */
struct  ftime   {
        /* least significant bits in a double word goes first! */
        unsigned        sec   : 5;   /* 0  Seconds / 2 */
        unsigned        min   : 6;   /* 5  Minutes */
        unsigned        hour  : 5;   /* 11 Hours */
        unsigned        day   : 5;   /* 16 Days */
        unsigned        month : 4;   /* 21 Months */
        unsigned        year  : 7;   /* 25 Year - 1980 */
};

/*
 *    Table for years 1979-2078
 */

#define  YEARS 100
#define  BASE  1979
static unsigned _year_day[] = {
 3345u,  3711u,  4076u,  4441u,  4806u,  5172u,  5537u,  5902u,
 6267u,  6633u,  6998u,  7363u,  7728u,  8094u,  8459u,  8824u,
 9189u,  9555u,  9920u, 10285u, 10650u, 11016u, 11381u, 11746u,
12111u, 12477u, 12842u, 13207u, 13572u, 13938u, 14303u, 14668u,
15033u, 15399u, 15764u, 16129u, 16494u, 16860u, 17225u, 17590u,
17955u, 18321u, 18686u, 19051u, 19416u, 19782u, 20147u, 20512u,
20877u, 21243u, 21608u, 21973u, 22338u, 22704u, 23069u, 23434u,
23799u, 24165u, 24530u, 24895u, 25260u, 25626u, 25991u, 26356u,
26721u, 27087u, 27452u, 27817u, 28182u, 28548u, 28913u, 29278u,
29643u, 30009u, 30374u, 30739u, 31104u, 31470u, 31835u, 32200u,
32565u, 32931u, 33296u, 33661u, 34026u, 34392u, 34757u, 35122u,
35487u, 35853u, 36218u, 36583u, 36948u, 37314u, 37679u, 38044u,
38409u, 38775u, 39140u, 39505u  };

static unsigned _month_day[] = {
  0, 31, 61, 92,122,153,184,214,245,275,306,337
};

#define  DOS   ((unsigned char*)dos)


unsigned long ToUnixTime (void *dos)
{
   unsigned lo = ((unsigned)(DOS[1]) << 8) | DOS[0];
   unsigned hi = ((unsigned)(DOS[3]) << 8) | DOS[2];
   unsigned y = ((hi >> 9) & 0x7f) + (1980 - BASE);
   unsigned m = (hi >> 5) & 0xf;

   if (m < 3) {
      --y;
      m += 12;
   }

   if (y >= YEARS)
      y = YEARS - 1;       /* Foolproof: if we wanna unknown year */

   return
      86400ul * (_month_day[m - 3] + _year_day[y] + (hi & 0x1f)) +
      3600ul * ((lo >> 11) & 0x1f) +
      60 * ((lo >> 5) & 0x3f) +
      2 * (lo & 0x1f);
}


static int binary_search (unsigned *data, unsigned datum, int num)
{
   int i, off = 0;

   while (num > 0) {
      i = num >> 1;

      if (datum == data[i + off])
         return (i + off);

      if (datum < data[i + off])
         num = i;
      else {
         off += i + 1;
         num -= i + 1;
      }
   }

   return off;
}


void FromUnixTime (unsigned long unix, void *dos)
{
   unsigned long ret = 0;
   unsigned date = (unsigned)(unix / 86400ul);

   /* can't convert dates before 1980 or after last known year */
   if (date >= _year_day[0] && date <= _year_day[YEARS - 1]) {
      unsigned y, m;

      y = binary_search (_year_day, date, YEARS);
      date -= _year_day[--y];

      m = binary_search (_month_day, date, 12);
      date -= _month_day[--m];

      if ((m += 3) > 12) {
         m -= 12;
         ++y;
      }

      /* merge year/month/date word in DOS format */
      date |= ((y - (1980 - BASE)) << 9) + (m << 5);

      unix %= 86400ul;
      m = (unsigned) (unix % 3600);
      ret = ((unsigned long)date << 16) +
            ((unix / 3600) << 11) +
            ((m / 60) << 5) +
            ((m % 60) >> 1);
   }

   DOS[0] = (unsigned char)(ret);
   DOS[1] = (unsigned char)(ret >> 8);
   DOS[2] = (unsigned char)(ret >> 16);
   DOS[3] = (unsigned char)(ret >> 24);
}


#ifdef TEST

#include <stdio.h>
#include <dir.h>

void main (int argc, char **argv)
{
   struct ftime ft;
   struct ffblk ff;
   long tt;

   if (argc == 2) {
      if (!findfirst (argv[1], &ff, -1)) {
         printf ("DOS %08lx\n", *(long *)&ff.ff_ftime);

         tt = ToUnixTime (&ff.ff_ftime);

         printf ("UNIX %08lx\n", tt);

         FromUnixTime (tt, &ft);

         printf ("DOS %08lx\n", *(unsigned long *)&ft);
         printf ("%u/%u/%u %u:%u:%u\n", ft.month, ft.day, ft.year + 1980,
               ft.hour, ft.min, ft.sec << 1);
      }
   }

}

#endif
_ _ _ O / _ _ C_U_T_ H_E_R_E_ _ _ _
      O \

[ THE END ]
