home *** CD-ROM | disk | FTP | other *** search
/ Groovy Bytes: Behind the Moon / groovybytes.iso / GROOVY / PPE / DIAMOND / JOIN120.ZIP / JOIN.PPE (.txt) < prev    next >
Encoding:
PCBoard Programming Language Executable  |  1994-12-31  |  5.9 KB  |  436 lines

  1. ;------------------------------------------------------------------------------
  2. ;                                                   .ss.
  3. ;                                                   `²²'
  4. ;             .,sS$Ss,,s$  .,sS$$$Ss.  .,sS$Ss,,s$ .ss.  .sSs.
  5. ;           .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
  6. ;           $$$'   .$$$' $$$²Sçsµ²' .$$$'   .$$$'.$$$' .$$$'  `$$b.
  7. ;           $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$'    ;$$$
  8. ;           `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
  9. ;                                    .sS²°$$$²²°"'       d²°'
  10. ;                                  .$$²  .$$'
  11. ;                                  $$$.,d$$'
  12. ;                                  `²S$$S²'
  13. ;------------------------------------------------------------------------------
  14. ; P.P.L.X. 2.OO                          (C)1996 - Lone Runner / AEGiS CoRP'96 
  15. ;------------------------------------------------------------------------------
  16. ; PPE 3.O1 (Encryption type I) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Boolean  BOOLEAN001
  20.     Boolean  BOOLEAN002
  21.     Integer  INTEGER001
  22.     Integer  INTEGER002
  23.     Integer  INTEGER003
  24.     Integer  INTEGER004
  25.     Integer  INTEGER005
  26.     Integer  INTEGER006
  27.     Integer  TINTEGER007(1)
  28.     Integer  INTEGER008
  29.     Integer  INTEGER009
  30.     Integer  INTEGER010
  31.     Integer  INTEGER011
  32.     Integer  INTEGER012
  33.     Integer  INTEGER013
  34.     Integer  INTEGER014
  35.     Integer  INTEGER015
  36.     String   STRING001
  37.     String   STRING002
  38.     String   STRING003
  39.     String   STRING004
  40.     String   STRING005
  41.     String   TSTRING006(1)
  42.     String   STRING007
  43.     String   STRING008
  44.     String   STRING009
  45.  
  46. ;------------------------------------------------------------------------------
  47.  
  48.     GetUser
  49.     INTEGER002 = 0
  50.     INTEGER003 = 0
  51.     STRING009 = GetToken()
  52.     STRING002 = STRING009
  53.     STRING005 = "@X08[JOiN 1.2 @X07(@X08r@X05)@X08]"
  54.     INTEGER001 = ReadLine(PCBDat(), 108)
  55.     FClose -1
  56.     Redim TSTRING006, INTEGER001 + 1
  57.     Redim TINTEGER007, INTEGER001 + 1
  58.     INTEGER010 = ReadLine(PPEPath() + "JOIN.CFG", 1)
  59.     INTEGER011 = ReadLine(PPEPath() + "JOIN.CFG", 2)
  60.     STRING007 = ReadLine(PPEPath() + "JOIN.CFG", 3)
  61.     STRING008 = Mid(ReadLine(PPEPath() + "JOIN.CFG", 4), 1, 1)
  62.     If (Upper(STRING008) == "Y") BOOLEAN002 = 1
  63.     FClose -1
  64.     INTEGER014 = ReadLine(PCBDat(), 89)
  65.     FClose -1
  66.     If (INTEGER014 == 0) INTEGER014 = 65535
  67.     INTEGER014 = INTEGER014 * 60
  68.     INTEGER013 = INTEGER011 - INTEGER010
  69.     If (Exist(PPEPath() + "CONFS")) STRING001 = PPEPath() + "CONFS"
  70.     If (Exist(PPEPath() + "CONFS" + GrafMode())) STRING001 = PPEPath() + "CONFS" + GrafMode()
  71.     If (Exist(PPEPath() + "CONFS" + LangExt())) STRING001 = PPEPath() + "CONFS" + LangExt()
  72.     If (Exist(PPEPath() + "CONFS" + GrafMode() + LangExt())) STRING001 = PPEPath() + "CONFS" + GrafMode() + LangExt()
  73.     If (STRING009 <> "") Goto LABEL015
  74.     If ((GrafMode() == "N") || (GrafMode() == "A")) Goto LABEL017
  75.     If ((U_PageLen < INTEGER011) && (U_PageLen > 0)) Goto LABEL017
  76.     Print "@X07@POFF@"
  77.     Cls
  78.     DispFile PPEPath() + "HEAD", 1 + 4
  79.     AnsiPos 1, INTEGER011 + 1
  80.     DispFile PPEPath() + "FOOT", 1 + 4
  81.     INTEGER012 = GetY()
  82.     If (GetX() > 1) Inc INTEGER012
  83.     AnsiPos 65, INTEGER011 + 1
  84.     Print STRING005
  85.     If (BOOLEAN002 == 1) Then
  86.         AnsiPos 25, INTEGER010 + INTEGER013 / 2 - 1
  87.         Print "@X08R@X07EA@X0FDiNG CONFERENCE DA@X07T@X08A  "
  88.     Endif
  89.     FOpen 1, STRING001, 0, 0
  90.     :LABEL001
  91.     If (Ferr(1)) Goto LABEL002
  92.     FGet 1, STRING002
  93.     If (Upper(StripAtx(STRING002)) == "<EOF>") Goto LABEL002
  94.     If (U_InConf(U_RecNum(U_Name()), StripAtx(STRING002)) == 1) Then
  95.         TINTEGER007(INTEGER003) = StripAtx(STRING002) + 1
  96.         If (StripAtx(STRING002) == CurConf()) INTEGER008 = INTEGER003
  97.         FGet 1, TSTRING006(TINTEGER007(INTEGER003))
  98.         BOOLEAN001 = 1
  99.         Inc INTEGER003
  100.         If (BOOLEAN002 == 1) Then
  101.             If (INTEGER009 > -1) Then
  102.                 Print "."
  103.                 Inc INTEGER009
  104.             Endif
  105.             If (INTEGER009 == 4) Then
  106.                 Backup 6
  107.                 Print "  "
  108.                 INTEGER009 = 0
  109.             Endif
  110.         Endif
  111.     Endif
  112.     If (BOOLEAN001 == 0) FGet 1, STRING002
  113.     BOOLEAN001 = 0
  114.     Goto LABEL001
  115.     :LABEL002
  116.     FClose 1
  117.     If (BOOLEAN002 == 1) Then
  118.         AnsiPos 1, INTEGER010 + INTEGER013 / 2 - 1
  119.         ClrEol
  120.     Endif
  121.     STRING002 = ""
  122.     INTEGER004 = INTEGER003 - 1
  123.     If (INTEGER013 > INTEGER004) INTEGER013 = INTEGER004
  124.     If (INTEGER004 < 0) Then
  125.         Print "@X07"
  126.         Cls
  127.         DispText 278, 2048 + 128
  128.         End
  129.     Endif
  130.     INTEGER002 = 0
  131.     INTEGER003 = 0
  132.     STRING004 = INTEGER008
  133.     INTEGER006 = INTEGER008
  134.     If (INTEGER008 > INTEGER004 - INTEGER013) INTEGER006 = INTEGER004 - INTEGER013
  135.     If (INTEGER008 <= INTEGER004 - INTEGER013 / 2) INTEGER006 = INTEGER008 - INTEGER013 / 2
  136.     If (STRING004 < INTEGER013 / 2) INTEGER006 = 0
  137.     INTEGER015 = Time() + INTEGER014
  138.     :LABEL003
  139.     Print "@X07"
  140.     INTEGER005 = STRING004
  141.     For INTEGER002 = INTEGER006 To INTEGER006 + INTEGER013
  142.         AnsiPos 1, INTEGER010 + INTEGER002 - INTEGER006
  143.         ClrEol
  144.         If (INTEGER002 <= INTEGER004) Then
  145.             STRING004 = INTEGER002
  146.             Gosub LABEL013
  147.         Endif
  148.     Next
  149.     STRING004 = INTEGER005
  150.     AnsiPos 1, STRING004 - INTEGER006 + INTEGER010
  151.     Gosub LABEL012
  152.     :LABEL004
  153.     STRING003 = Inkey()
  154.     If (STRING003 <> "") Goto LABEL005
  155.     If (Time() >= INTEGER015) Goto LABEL021
  156.     If (Time() == INTEGER015 - 10) Then
  157.         Print "@BEEP@"
  158.         Delay 19
  159.     Endif
  160.     If (Time() == INTEGER015 - 20) Then
  161.         Print "@BEEP@"
  162.         Delay 19
  163.     Endif
  164.     If (Time() == INTEGER015 - 30) Then
  165.         Print "@BEEP@"
  166.         Delay 19
  167.     Endif
  168.     If (Time() == INTEGER015 - 40) Then
  169.         Print "@BEEP@"
  170.         Delay 19
  171.     Endif
  172.     If (Time() == INTEGER015 - 50) Then
  173.         Print "@BEEP@"
  174.         Delay 19
  175.     Endif
  176.     Goto LABEL004
  177.     :LABEL005
  178.     INTEGER015 = Time() + INTEGER014
  179.     If (Upper(STRING003) == "Q") Goto LABEL020
  180.     If (Upper(STRING003) == "E") Goto LABEL016
  181.     If (STRING003 == "HOME") Goto LABEL006
  182.     If (STRING003 == "PGUP") Goto LABEL007
  183.     If (STRING003 == "UP") Goto LABEL008
  184.     If (STRING003 == "DOWN") Goto LABEL009
  185.     If (STRING003 == "PGDN") Goto LABEL010
  186.     If (STRING003 == "END") Goto LABEL011
  187.     If (STRING003 == "LEFT") Goto LABEL008
  188.     If (STRING003 == "RIGHT") Goto LABEL009
  189.     If (STRING003 == "7") Goto LABEL006
  190.     If (STRING003 == "9") Goto LABEL007
  191.     If (STRING003 == "8") Goto LABEL008
  192.     If (STRING003 == "2") Goto LABEL009
  193.     If (STRING003 == "3") Goto LABEL010
  194.     If (STRING003 == "1") Goto LABEL011
  195.     If (STRING003 == "4") Goto LABEL008
  196.     If (STRING003 == "6") Goto LABEL009
  197.     If (STRING003 == Chr(13)) Goto LABEL014
  198.     If (STRING003 == Chr(10)) Goto LABEL014
  199.     If (STRING003 == Chr(32)) Goto LABEL014
  200.     If (STRING003 == Chr(27)) Goto LABEL020
  201.     Goto LABEL004
  202.     :LABEL006
  203.     If (STRING004 == 0) Goto LABEL004
  204.     INTEGER006 = 0
  205.     STRING004 = 0
  206.     Goto LABEL003
  207.     :LABEL007
  208.     If (STRING004 == 0) Goto LABEL004
  209.     If (STRING004 <= INTEGER013) Goto LABEL006
  210.     INTEGER006 = INTEGER006 - INTEGER013 - 1
  211.     If (INTEGER006 < 0) INTEGER006 = 0
  212.     STRING004 = STRING004 - INTEGER013 - 1
  213.     Goto LABEL003
  214.     :LABEL008
  215.     If (STRING004 == 0) Goto LABEL004
  216.     If (GetY() == INTEGER010) Then
  217.         If (STRING004 <= INTEGER013) Then
  218.             INTEGER006 = 0
  219.             Dec STRING004
  220.             Goto LABEL003
  221.         Endif
  222.         INTEGER006 = INTEGER006 - INTEGER013 - 1
  223.         Dec STRING004
  224.         Goto LABEL003
  225.     Endif
  226.     Print "@X07"
  227.     AnsiPos 1, GetY()
  228.     ClrEol
  229.     Gosub LABEL013
  230.     Dec STRING004
  231.     AnsiPos 1, GetY() - 1
  232.     Print STRING007
  233.     ClrEol
  234.     Gosub LABEL012
  235.     Goto LABEL004
  236.     :LABEL009
  237.     If (STRING004 == INTEGER004) Goto LABEL004
  238.     If (GetY() == INTEGER011) Then
  239.         If (STRING004 >= INTEGER004 - INTEGER013) Then
  240.             INTEGER006 = INTEGER004 - INTEGER013
  241.             Inc STRING004
  242.             Goto LABEL003
  243.         Endif
  244.         INTEGER006 = INTEGER006 + INTEGER013 + 1
  245.         Inc STRING004
  246.         Goto LABEL003
  247.     Endif
  248.     Print "@X07"
  249.     AnsiPos 1, GetY()
  250.     ClrEol
  251.     Gosub LABEL013
  252.     Inc STRING004
  253.     AnsiPos 1, GetY() + 1
  254.     Print STRING007
  255.     ClrEol
  256.     Gosub LABEL012
  257.     Goto LABEL004
  258.     :LABEL010
  259.     If (STRING004 == INTEGER004) Goto LABEL004
  260.     If (STRING004 >= INTEGER004 - INTEGER013) Goto LABEL011
  261.     INTEGER006 = INTEGER006 + INTEGER013 + 1
  262.     If (INTEGER006 > INTEGER004 - INTEGER013) INTEGER006 = INTEGER004 - INTEGER013
  263.     STRING004 = STRING004 + INTEGER013 + 1
  264.     Goto LABEL003
  265.     :LABEL011
  266.     If (STRING004 == INTEGER004) Goto LABEL004
  267.     INTEGER006 = INTEGER004 - INTEGER013
  268.     STRING004 = INTEGER004
  269.     Goto LABEL003
  270.     :LABEL012
  271.     Print STRING007
  272.     AnsiPos 1, GetY()
  273.     ClrEol
  274.     Print StripAtx(TSTRING006(TINTEGER007(STRING004)))
  275.     Return
  276.     :LABEL013
  277.     Print TSTRING006(TINTEGER007(STRING004))
  278.     Return
  279.     :LABEL014
  280.     Print "@X07"
  281.     Cls
  282.     STRING002 = TINTEGER007(STRING004) - 1
  283.     :LABEL015
  284.     KbdStuff "J " + STRING002 + Chr(13)
  285.     End
  286.     :LABEL016
  287.     Print "@X07"
  288.     AnsiPos 1, INTEGER012
  289.     PromptStr 64, STRING002, 6, Mask_Num(), 0
  290.     If (STRING002 == "") End
  291.     Goto LABEL015
  292.     :LABEL017
  293.     Print "@X07"
  294.     Cls
  295.     DispFile PPEPath() + "HEAD", 1 + 4
  296.     If (GetX() > 1) Newline
  297.     Print "@X07"
  298.     FOpen 1, STRING001, 0, 0
  299.     :LABEL018
  300.     If (Ferr(1)) Goto LABEL019
  301.     FGet 1, STRING002
  302.     If (Upper(StripAtx(STRING002)) == "<EOF>") Goto LABEL019
  303.     If (Abort() == 1) Goto LABEL019
  304.     If (U_InConf(U_RecNum(U_Name()), StripAtx(STRING002)) == 1) Then
  305.         TINTEGER007(INTEGER003) = StripAtx(STRING002) + 1
  306.         FGet 1, TSTRING006(TINTEGER007(INTEGER003))
  307.         BOOLEAN001 = 1
  308.         PrintLn TSTRING006(TINTEGER007(INTEGER003))
  309.         Inc INTEGER003
  310.     Endif
  311.     If (BOOLEAN001 == 0) FGet 1, STRING002
  312.     BOOLEAN001 = 0
  313.     Goto LABEL018
  314.     :LABEL019
  315.     STRING002 = ""
  316.     FClose 1
  317.     DispFile PPEPath() + "FOOT2", 1 + 4
  318.     If (GetX() < 2) Newline
  319.     If (GetX() > 1) Newlines 2
  320.     PromptStr 64, STRING002, 6, Mask_Num(), 0
  321.     If (STRING002 == "") End
  322.     Goto LABEL015
  323.     :LABEL020
  324.     Print "@X07"
  325.     Cls
  326.     End
  327.     :LABEL021
  328.     Print "@X07"
  329.     Cls
  330.     DispText 55, 2048 + 128 + 256
  331.     Hangup
  332.     End
  333.  
  334. ;------------------------------------------------------------------------------
  335. ;
  336. ; Usage report (before postprocessing)
  337. ;
  338. ; ■ Statements used :
  339. ;
  340. ;    6       End
  341. ;    6       Cls
  342. ;    7       ClrEol
  343. ;    77      Goto 
  344. ;    62      Let 
  345. ;    25      Print 
  346. ;    1       PrintLn 
  347. ;    80      If 
  348. ;    4       DispFile 
  349. ;    2       FOpen 
  350. ;    5       FClose 
  351. ;    6       FGet 
  352. ;    1       Hangup
  353. ;    1       GetUser
  354. ;    6       Gosub 
  355. ;    2       Return
  356. ;    2       PromptStr 
  357. ;    5       Delay 
  358. ;    7       Inc 
  359. ;    3       Dec 
  360. ;    2       Newline
  361. ;    1       Newlines 
  362. ;    2       DispText 
  363. ;    1       KbdStuff 
  364. ;    12      AnsiPos 
  365. ;    1       Backup 
  366. ;    2       Redim 
  367. ;
  368. ;
  369. ; ■ Functions used :
  370. ;
  371. ;    4       -
  372. ;    1       *
  373. ;    5       /
  374. ;    55      +
  375. ;    29      -
  376. ;    53      ==
  377. ;    2       <>
  378. ;    6       <
  379. ;    5       <=
  380. ;    8       >
  381. ;    5       >=
  382. ;    21      !
  383. ;    3       &&
  384. ;    2       ||
  385. ;    5       Upper()
  386. ;    1       Mid()
  387. ;    2       Ferr()
  388. ;    5       Chr()
  389. ;    1       Abort()
  390. ;    8       Time()
  391. ;    2       U_Name()
  392. ;    8       StripAtx()
  393. ;    1       Inkey()
  394. ;    2       Mask_Num()
  395. ;    1       CurConf()
  396. ;    2       PCBDat()
  397. ;    16      PPEPath()
  398. ;    6       ReadLine()
  399. ;    1       GetToken()
  400. ;    4       Exist()
  401. ;    4       LangExt()
  402. ;    4       GetX()
  403. ;    8       GetY()
  404. ;    6       GrafMode()
  405. ;    2       U_RecNum()
  406. ;    2       U_InConf()
  407. ;
  408. ;------------------------------------------------------------------------------
  409. ;
  410. ; Analysis flags : Bd
  411. ;
  412. ; B - Brute hangup ■ 1
  413. ;     Program hangup without notification. This may be a good way to
  414. ;     disconnect a user, but if used randomly, may be very nasty
  415. ;     ■ Search for : HANGUP, DTROFF
  416. ;
  417. ; d - Access PCBOARD.DAT ■ 2
  418. ;     Program gets the full pathname to PCBOARD.DAT, this may be usefull
  419. ;     for many PPE so they can find various informations on the system
  420. ;     (system paths, max number of lines in messages, ...) but it may also
  421. ;     be a way to gather vital informations.
  422. ;     ■ Search for : PCBDAT()
  423. ;
  424. ;------------------------------------------------------------------------------
  425. ;
  426. ; Postprocessing report
  427. ;
  428. ;    1       For/Next
  429. ;    0       While/EndWhile
  430. ;    18      If/Then or If/Then/Else
  431. ;    0       Select Case
  432. ;
  433. ;------------------------------------------------------------------------------
  434. ;                 AEGiS Corp - Break the routines, code against the machines!
  435. ;------------------------------------------------------------------------------
  436.