home *** CD-ROM | disk | FTP | other *** search
/ The Equalizer BBS / equalizer-bbs-collection_2004.zip / equalizer-bbs-collection / BBS-PCBOARD-STUFF / AGSMC10.ZIP / MCUTILS.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1995-02-27  |  7KB  |  570 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.     Boolean  BOOLEAN003
  22.     DWord    DWORD001
  23.     Integer  INTEGER001
  24.     String   STRING001
  25.     String   STRING002
  26.     String   STRING003
  27.     String   STRING004
  28.     String   STRING005
  29.     String   STRING006
  30.     String   STRING007
  31.     String   STRING010
  32.     String   STRING011
  33.     Word     WORD001
  34.     Word     WORD002
  35.     Word     WORD003
  36.     Word     TWORD004(9)
  37.     Word     WORD005
  38.     Word     WORD006
  39.     Word     WORD007
  40.     Word     WORD008
  41.     Word     WORD009
  42.     Word     WORD010
  43.     Word     WORD011
  44.     Word     WORD012
  45.     Word     WORD014
  46.     Declare  Function FUNCTION001(String STRING009) String
  47.     Declare  Function FUNCTION002() String
  48.     Declare  Function FUNCTION003() Word
  49.     Declare  Procedure PROC001()
  50.     Declare  Procedure PROC002(String STRING008, Word WORD013)
  51.     Declare  Procedure PROC005()
  52.     Declare  Procedure PROC006(Word WORD016)
  53.     Declare  Procedure PROC007(Word WORD015)
  54.     Declare  Procedure PROC008()
  55.     Declare  Procedure PROC009()
  56.  
  57. ;------------------------------------------------------------------------------
  58.  
  59.     STRING007 = PPEPath() + "GROUP.LOG"
  60.     GetUser
  61.     StartDisp 1
  62.     Print "@POFF@"
  63.     STRING001 = PPEPath() + "WORK\ORG.DAT"
  64.     If (Exist(STRING001)) Goto LABEL001
  65.     PROC008()
  66.     End
  67.     :LABEL001
  68.     DispFile PPEPath() + "MCUTILS", 0 + 4
  69.     DWORD001 = Crc32(1, STRING001)
  70.     WORD010 = 1
  71.     AnsiPos 28, 7 + WORD010
  72.     Print "@X09■"
  73.     INTEGER001 = Time()
  74.     AnsiPos 1, 23
  75.     WORD005 = FileInf(STRING001, 4) / 2
  76.     PROC001()
  77.     For WORD002 = 1 To WORD005
  78.         AnsiPos 25, 7 + WORD002
  79.         If (WORD002 < 10) Then
  80.             Print "@X0F", WORD002
  81.         Else
  82.             Print "@X0F" + "0"
  83.         Endif
  84.         AnsiPos 29, 7 + WORD002
  85.         If (TWORD004(WORD002 - 1) <> 0) Then
  86.             RdUNet TWORD004(WORD002 - 1)
  87.             Print FUNCTION001(UN_Name())
  88.             Continue
  89.         Endif
  90.         Print "-"
  91.     Next
  92.     WORD009 = 1
  93.     Gosub LABEL013
  94.     While (1) Do
  95.         PROC009()
  96.         STRING003 = Inkey()
  97.         If (STRING003 == "RIGHT") Then
  98.             Gosub LABEL012
  99.             If (WORD009 < 4) Then
  100.                 Inc WORD009
  101.                 Goto LABEL002
  102.             Endif
  103.             WORD009 = 1
  104.             :LABEL002
  105.             Gosub LABEL013
  106.             AnsiPos 1, 23
  107.             Continue
  108.         Endif
  109.         If (STRING003 == "LEFT") Then
  110.             Gosub LABEL012
  111.             If (WORD009 > 1) Then
  112.                 Dec WORD009
  113.                 Goto LABEL003
  114.             Endif
  115.             WORD009 = 4
  116.             :LABEL003
  117.             Gosub LABEL013
  118.             AnsiPos 1, 23
  119.             Continue
  120.         Endif
  121.         If (STRING003 == Chr(13)) Then
  122.             If (WORD009 == 1) Then
  123.                 PROC005()
  124.                 End
  125.             Endif
  126.             If (WORD009 == 2) Then
  127.                 STRING005 = FUNCTION002()
  128.                 If (BOOLEAN002) Goto LABEL004
  129.                 PrintLn 
  130.                 STRING005 = "/" + U_Name() + " : " + STRING005
  131.                 WORD002 = FUNCTION003()
  132.                 If (WORD002 <> 0) Then
  133.                     PROC002(STRING005, WORD002)
  134.                     FAppend 7, STRING007, 1, 0
  135.                     FPutLn 7, "     -*- SYSOP -------------------*> (MCUTILS.PPE) - PRIVATE TO #" + String(WORD002) + " :"
  136.                     FPutLn 7, STRING005
  137.                     FClose 7
  138.                     STRING002 = ScrText(27, 7, 5, 1)
  139.                     AnsiPos 27, 7
  140.                     Print "@X8FSeNT!"
  141.                     AnsiPos 1, 23
  142.                     Delay 18
  143.                     AnsiPos 1, 22
  144.                     ClrEol
  145.                     AnsiPos 27, 7
  146.                     Print STRING002
  147.                     Goto LABEL005
  148.                 Endif
  149.                 :LABEL004
  150.                 AnsiPos 1, 22
  151.                 ClrEol
  152.                 :LABEL005
  153.                 AnsiPos 1, 23
  154.             Endif
  155.             If (WORD009 == 3) Then
  156.                 If (BOOLEAN003) Goto LABEL006
  157.                 FOpen 1, PPEPath() + "WORK\LOCKED.SEM", 1, 0
  158.                 FPutLn 1, "Chat is locked !"
  159.                 FClose 1
  160.                 STRING002 = "Chat has been locked by the sysop!"
  161.                 FAppend 7, STRING007, 1, 0
  162.                 FPutLn 7, "     -*- SYSOP -------------------*> (MCUTILS.PPE) LOCK THE CHAT"
  163.                 FClose 7
  164.                 For WORD002 = 1 To WORD005
  165.                     If (TWORD004(WORD002 - 1)) PROC002(STRING002, WORD002)
  166.                 Next
  167.                 Goto LABEL007
  168.                 :LABEL006
  169.                 Delete PPEPath() + "WORK\LOCKED.SEM"
  170.                 STRING002 = "Chat has been unlocked by the sysop!"
  171.                 FAppend 7, STRING007, 1, 0
  172.                 FPutLn 7, "     -*- SYSOP -------------------*> (MCUTILS.PPE) UNLOCK THE CHAT"
  173.                 FClose 7
  174.                 For WORD002 = 1 To WORD005
  175.                     If (TWORD004(WORD002 - 1)) PROC002(STRING002, WORD002)
  176.                 Next
  177.             Endif
  178.             :LABEL007
  179.             If (WORD009 == 4) Then
  180.                 WORD002 = FUNCTION003()
  181.                 If (WORD002 == 0) Continue
  182.                 If (WORD002 == 10) WORD002 = 0
  183.                 FAppend 7, STRING007, 1, 0
  184.                 FPutLn 7, "     -*- SYSOP -------------------*> (MCUTILS.PPE) EJECT #" + String(WORD002)
  185.                 FClose 7
  186.                 FOpen 1, PPEPath() + "WORK\EJECT." + String(WORD002), 1, 0
  187.                 FPutLn 1, "Go away !"
  188.                 FClose 1
  189.             Endif
  190.             Continue
  191.         Endif
  192.         If (STRING003 == Chr(27)) Then
  193.             PROC005()
  194.             End
  195.         Endif
  196.     EndWhile
  197.     End
  198.  
  199. ;------------------------------------------------------------------------------
  200.  
  201.     Procedure PROC001()
  202.  
  203.     WORD008 = 0
  204.     FOpen 1, STRING001, 0, 3
  205.     FSeek 1, 0, 0
  206.     For WORD003 = 1 To WORD005
  207.         FRead 1, WORD002, 2
  208.         If (WORD002 <> 0) Then
  209.             Inc WORD008
  210.             If (WORD002 == PcbNode()) WORD001 = WORD003
  211.             TWORD004(WORD003 - 1) = WORD002
  212.             Continue
  213.         Endif
  214.         TWORD004(WORD003 - 1) = 0
  215.     Next
  216.     FClose 1
  217.  
  218.     EndProc
  219.  
  220.  
  221. ;------------------------------------------------------------------------------
  222.  
  223.     Procedure PROC002(String STRING008, Word WORD013)
  224.  
  225.     WORD007 = WORD013
  226.     If (WORD007 == 10) WORD007 = 0
  227.     FCreate 1, PPEPath() + "WORK\PVT." + String(WORD007), 1, 0
  228.     FPutLn 1, Left(STRING008, 80)
  229.     FClose 1
  230.  
  231.     EndProc
  232.  
  233.  
  234. ;------------------------------------------------------------------------------
  235.  
  236.     Function FUNCTION001(String STRING009) String
  237.  
  238.     STRING002 = Upper(STRING009)
  239.     STRING002 = Replace(STRING002, "A", "a")
  240.     STRING002 = Replace(STRING002, "E", "e")
  241.     STRING002 = Replace(STRING002, "I", "i")
  242.     STRING002 = Replace(STRING002, "O", "o")
  243.     STRING002 = Replace(STRING002, "U", "u")
  244.     FUNCTION001 = STRING002
  245.  
  246.     EndFunc
  247.  
  248.  
  249. ;------------------------------------------------------------------------------
  250.  
  251.     Procedure PROC005()
  252.  
  253.     Color 15
  254.     Cls
  255.     AnsiPos 33, 11
  256.     Color 8
  257.     Gosub LABEL008
  258.     Color 7
  259.     Gosub LABEL008
  260.     Color 15
  261.     Gosub LABEL008
  262.     Color 7
  263.     Gosub LABEL008
  264.     Color 8
  265.     Gosub LABEL008
  266.     Color 15
  267.     Print "              "
  268.     Goto LABEL009
  269.     :LABEL008
  270.     Print "<┤EGiS CoRP'94"
  271.     Delay 2
  272.     Backup 14
  273.     Return
  274.     :LABEL009
  275.  
  276.     EndProc
  277.  
  278.  
  279. ;------------------------------------------------------------------------------
  280.  
  281.     Function FUNCTION002() String
  282.  
  283.     Word     WORD014
  284.  
  285.     BOOLEAN002 = 0
  286.     AnsiPos 1, 22
  287.     Print "@X0F"
  288.     Print "@X09MeSSaGE )> "
  289.     STRING004 = ""
  290.     :LABEL010
  291.     PROC009()
  292.     STRING003 = Inkey()
  293.     If (STRING003 <> "") Then
  294.         If (Len(STRING003) < 2) Then
  295.             If (STRING003 == Chr(27)) Then
  296.                 BOOLEAN002 = 1
  297.                 STRING003 = Chr(13)
  298.                 Goto LABEL011
  299.             Endif
  300.             If (STRING003 == Chr(13)) Then
  301.                 Goto LABEL011
  302.             Endif
  303.             If ((Asc(STRING003) > 31) && (Len(STRING004) < 50)) Then
  304.                 Color 15
  305.                 Print STRING003
  306.                 STRING004 = STRING004 + STRING003
  307.             Endif
  308.             If (STRING003 == Chr(8)) Then
  309.                 If (Len(STRING004) > 0) Then
  310.                     Backup 1
  311.                     Print "@X07 "
  312.                     Backup 1
  313.                     STRING004 = Mid(STRING004, 1, Len(STRING004) - 1)
  314.                 Endif
  315.             Endif
  316.         Endif
  317.     Endif
  318.     Goto LABEL010
  319.     :LABEL011
  320.     FUNCTION002 = STRING004
  321.  
  322.     EndFunc
  323.  
  324.  
  325. ;------------------------------------------------------------------------------
  326.  
  327.     Function FUNCTION003() Word
  328.  
  329.     Word     WORD015
  330.  
  331.     WORD006 = 1
  332.     PROC006(1)
  333.     While (1) Do
  334.         PROC009()
  335.         If (BOOLEAN001) Then
  336.             PROC006(WORD006)
  337.             BOOLEAN001 = 0
  338.         Endif
  339.         STRING003 = Inkey()
  340.         If (STRING003 == "DOWN") Then
  341.             PROC007(WORD006)
  342.             Inc WORD006
  343.             If (WORD006 > WORD005) WORD006 = 1
  344.             PROC006(WORD006)
  345.             Continue
  346.         Endif
  347.         If (STRING003 == "UP") Then
  348.             PROC007(WORD006)
  349.             Dec WORD006
  350.             If (WORD006 == 0) WORD006 = WORD005
  351.             PROC006(WORD006)
  352.             Continue
  353.         Endif
  354.         If (STRING003 == Chr(13)) Then
  355.             If (TWORD004(WORD006 - 1)) Then
  356.                 PROC007(WORD006)
  357.                 FUNCTION003 = WORD006
  358.                 Break
  359.             Endif
  360.             Continue
  361.         Endif
  362.         If (STRING003 == Chr(27)) Then
  363.             PROC007(WORD006)
  364.             FUNCTION003 = 0
  365.             Break
  366.         Endif
  367.     EndWhile
  368.  
  369.     EndFunc
  370.  
  371.  
  372. ;------------------------------------------------------------------------------
  373.  
  374.     Procedure PROC007(Word WORD015)
  375.  
  376.     AnsiPos 29, 7 + WORD015
  377.     Print "@X0F" + ScrText(29, 7 + WORD015, 25, 0)
  378.     AnsiPos 1, 23
  379.  
  380.     EndProc
  381.  
  382.  
  383. ;------------------------------------------------------------------------------
  384.  
  385.     Procedure PROC006(Word WORD016)
  386.  
  387.     AnsiPos 29, 7 + WORD016
  388.     Print "@X1F" + ScrText(29, 7 + WORD016, 25, 0)
  389.     AnsiPos 1, 23
  390.  
  391.     EndProc
  392.  
  393.  
  394. ;------------------------------------------------------------------------------
  395.  
  396.     Procedure PROC008()
  397.  
  398.     Cls
  399.     DispFile PPEPath() + "NOBODY", 0 + 4
  400.  
  401.     EndProc
  402.  
  403.     :LABEL012
  404.     AnsiPos 11 + (WORD009 - 1) * 14, 19
  405.     Print "@X0F" + ScrText(11 + (WORD009 - 1) * 14, 19, 14, 0)
  406.     Return
  407.     :LABEL013
  408.     AnsiPos 11 + (WORD009 - 1) * 14, 19
  409.     Print "@X1F" + ScrText(11 + (WORD009 - 1) * 14, 19, 14, 0)
  410.     Return
  411.     End
  412.  
  413. ;------------------------------------------------------------------------------
  414.  
  415.     Procedure PROC009()
  416.  
  417.     If (Exist(STRING001)) Goto LABEL014
  418.     PROC008()
  419.     End
  420.     :LABEL014
  421.     If (Exist(PPEPath() + "WORK\LOCKED.SEM")) Then
  422.         If (BOOLEAN003) Goto LABEL015
  423.         BOOLEAN003 = 1
  424.         STRING006 = ScrText(35, 7, 6, 1)
  425.         AnsiPos 36, 7
  426.         Print "@X0FLoCKeD"
  427.         AnsiPos 1, 23
  428.         :LABEL015
  429.     ElseIf (BOOLEAN003) Then
  430.         BOOLEAN003 = 0
  431.         AnsiPos 36, 7
  432.         Print STRING006
  433.         AnsiPos 1, 23
  434.     Endif
  435.     If (Exist(STRING001)) Then
  436.         If (Crc32(1, STRING001) <> DWORD001) Then
  437.             WORD011 = GetX()
  438.             WORD012 = GetY()
  439.             DWORD001 = Crc32(1, STRING001)
  440.             WORD005 = FileInf(STRING001, 4) / 2
  441.             PROC001()
  442.             BOOLEAN001 = 1
  443.             For WORD002 = 1 To WORD005
  444.                 AnsiPos 25, 7 + WORD002
  445.                 If (WORD002 < 10) Then
  446.                     Print "@X0F", WORD002
  447.                     Goto LABEL016
  448.                 Endif
  449.                 Print "@X0F" + "0"
  450.                 :LABEL016
  451.                 AnsiPos 29, 7 + WORD002
  452.                 If (TWORD004(WORD002 - 1) <> 0) Then
  453.                     RdUNet TWORD004(WORD002 - 1)
  454.                     Print FUNCTION001(UN_Name())
  455.                     Continue
  456.                 Endif
  457.                 Print "-                        "
  458.             Next
  459.             AnsiPos WORD011, WORD012
  460.             Goto LABEL017
  461.         Endif
  462.         If (INTEGER001 + 1 < Time()) Then
  463.             WORD011 = GetX()
  464.             WORD012 = GetY()
  465.             AnsiPos 28, 7 + WORD010
  466.             Print "@X0F "
  467.             Inc WORD010
  468.             If (WORD010 > WORD005) WORD010 = 1
  469.             AnsiPos 28, 7 + WORD010
  470.             Print "@X09■"
  471.             INTEGER001 = Time()
  472.             AnsiPos WORD011, WORD012
  473.         Endif
  474.     Endif
  475.     :LABEL017
  476.  
  477.     EndProc
  478.  
  479.  
  480. ;------------------------------------------------------------------------------
  481. ;
  482. ; Usage report (before postprocessing)
  483. ;
  484. ; ■ Statements used :
  485. ;
  486. ;    6       End
  487. ;    2       Cls
  488. ;    2       ClrEol
  489. ;    8       Color 
  490. ;    77      Goto 
  491. ;    68      Let 
  492. ;    26      Print 
  493. ;    1       PrintLn 
  494. ;    55      If 
  495. ;    2       DispFile 
  496. ;    1       FCreate 
  497. ;    3       FOpen 
  498. ;    4       FAppend 
  499. ;    8       FClose 
  500. ;    8       FPutLn 
  501. ;    1       StartDisp 
  502. ;    1       GetUser
  503. ;    1       Delete 
  504. ;    10      Gosub 
  505. ;    3       Return
  506. ;    2       Delay 
  507. ;    4       Inc 
  508. ;    2       Dec 
  509. ;    2       RdUNet 
  510. ;    30      AnsiPos 
  511. ;    3       Backup 
  512. ;    1       FSeek 
  513. ;    1       FRead 
  514. ;    7       EndProc
  515. ;    3       EndFunc
  516. ;
  517. ;
  518. ; ■ Functions used :
  519. ;
  520. ;    4       *
  521. ;    2       /
  522. ;    47      +
  523. ;    14      -
  524. ;    20      ==
  525. ;    6       <>
  526. ;    11      <
  527. ;    5       <=
  528. ;    5       >
  529. ;    10      >=
  530. ;    45      !
  531. ;    11      &&
  532. ;    5       ||
  533. ;    4       Len(
  534. ;    1       Upper()
  535. ;    1       Mid()
  536. ;    1       Left()
  537. ;    8       Chr()
  538. ;    1       Asc()
  539. ;    3       Time()
  540. ;    1       U_Name()
  541. ;    5       Replace()
  542. ;    3       Inkey()
  543. ;    4       String()
  544. ;    9       PPEPath()
  545. ;    1       PcbNode()
  546. ;    2       UN_Name()
  547. ;    4       Exist()
  548. ;    2       GetX()
  549. ;    2       GetY()
  550. ;    2       FileInf()
  551. ;    6       ScrText()
  552. ;    3       Crc32()
  553. ;
  554. ;------------------------------------------------------------------------------
  555. ;
  556. ; Analysis flags : No flag
  557. ;
  558. ;------------------------------------------------------------------------------
  559. ;
  560. ; Postprocessing report
  561. ;
  562. ;    5       For/Next
  563. ;    2       While/EndWhile
  564. ;    34      If/Then or If/Then/Else
  565. ;    0       Select Case
  566. ;
  567. ;------------------------------------------------------------------------------
  568. ;                 AEGiS Corp - Break the routines, code against the machines!
  569. ;------------------------------------------------------------------------------
  570.