home *** CD-ROM | disk | FTP | other *** search
/ The Pier Shareware 6 / The_Pier_Shareware_Number_6_(The_Pier_Exchange)_(1995).iso / 005 / v_ssc100.zip / SSCHAT.PPE (.txt) < prev   
PCBoard Programming Language Executable  |  1994-11-09  |  10KB  |  722 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.     Boolean  BOOLEAN004
  23.     Integer  INTEGER001
  24.     Integer  INTEGER002
  25.     Integer  INTEGER003
  26.     Integer  TINTEGER004(1)
  27.     Integer  TINTEGER005(1)
  28.     Integer  TINTEGER006(1)
  29.     Integer  TINTEGER007(1)
  30.     Integer  TINTEGER008(1)
  31.     Integer  TINTEGER009(1)
  32.     Integer  TINTEGER010(1)
  33.     Integer  TINTEGER011(1)
  34.     Integer  TINTEGER012(1)
  35.     Integer  INTEGER013
  36.     Integer  INTEGER014
  37.     Integer  INTEGER015
  38.     Integer  INTEGER016
  39.     Integer  INTEGER017
  40.     Integer  INTEGER018
  41.     Integer  INTEGER019
  42.     String   STRING001
  43.     String   STRING002
  44.     String   TSTRING003(1)
  45.     String   TSTRING004(1)
  46.     String   TSTRING005(25)
  47.     String   TSTRING006(25)
  48.     String   STRING007
  49.     String   TSTRING008(25)
  50.     String   STRING009
  51.     String   STRING010
  52.     String   STRING012
  53.     String   STRING014
  54.     Declare  Function FUNCTION001(String STRING013) Boolean
  55.     Declare  Function FUNCTION002(String STRING011) String
  56.     Declare  Function FUNCTION003() String
  57.     Declare  Function FUNCTION004() Integer
  58.     Declare  Procedure PROC001()
  59.     Declare  Procedure PROC002()
  60.     Declare  Procedure PROC003()
  61.     Declare  Procedure PROC004()
  62.     Declare  Procedure PROC005()
  63.     Declare  Procedure PROC006()
  64.     Declare  Procedure PROC007()
  65.     Declare  Procedure PROC008()
  66.     Declare  Procedure PROC009()
  67.     Declare  Procedure PROC010()
  68.     Declare  Procedure PROC011()
  69.     Declare  Procedure PROC012()
  70.     Declare  Procedure PROC013()
  71.     Declare  Procedure PROC014()
  72.  
  73. ;------------------------------------------------------------------------------
  74.  
  75.     GetUser
  76.     RdUNet PcbNode()
  77.     PageOff
  78.     INTEGER013 = 1
  79.     INTEGER014 = 1
  80.     STRING010 = PPEPath() + PPEName() + ".$$$"
  81.     Goto LABEL002
  82.     End
  83.  
  84. ;------------------------------------------------------------------------------
  85.  
  86.     Procedure PROC013()
  87.  
  88.     Integer  INTEGER018
  89.  
  90.     DoIntr 16, B2W(1, 1), 0, B2W(32, 64), 0, 0, 0, 0, 0, 0
  91.     Color 7
  92.     For INTEGER018 = 1 To 11
  93.         AnsiPos 1, INTEGER018
  94.         ClrEol
  95.         PROC014()
  96.         AnsiPos 1, 24 - INTEGER018
  97.         ClrEol
  98.         PROC014()
  99.     Next
  100.     Cls
  101.     AnsiPos 1, 12
  102.     Color 15
  103.     Print "──────────────────────────────────────────────────────────────────────────────"
  104.     For INTEGER018 = 1 To 40
  105.         AnsiPos INTEGER018, 12
  106.         Print Chr(32)
  107.         AnsiPos 80 - INTEGER018, 12
  108.         Print Chr(32)
  109.         PROC014()
  110.     Next
  111.     Print Chr(8) + "∙"
  112.     PROC014()
  113.     Delay 8
  114.     Print Chr(8) + Chr(32)
  115.  
  116.     EndProc
  117.  
  118.  
  119. ;------------------------------------------------------------------------------
  120.  
  121.     Procedure PROC014()
  122.  
  123.     :LABEL001
  124.     If (!(OutBytes() == 0)) Goto LABEL001
  125.  
  126.     EndProc
  127.  
  128.     :LABEL002
  129.     If ((GrafMode() == "N") || (GrafMode() == "A")) Then
  130.         Print "Hello, this is @OPTEXT@.  "
  131.         End
  132.     Endif
  133.     FOpen 1, PPEPath() + PPEName() + ".INI", 0, 0
  134.     :LABEL003
  135.     If (Ferr(1)) Goto LABEL005
  136.     FGet 1, STRING002
  137.     If (InStr(STRING002, "=") == 0) Goto LABEL004
  138.     PROC010()
  139.     Select Case (Upper(STRING002))
  140.         Case "CHATLOG"
  141.             If (FUNCTION001(FUNCTION003())) BOOLEAN001 = 1
  142.         Case "REFUNDTIME"
  143.             If (FUNCTION001(FUNCTION003())) INTEGER015 = MinLeft()
  144.         Case "EXITANIMATION"
  145.             If (FUNCTION001(FUNCTION003())) BOOLEAN003 = 1
  146.         Case "KEYBOARDSTUFF"
  147.             TSTRING003(0) = FUNCTION003()
  148.         Case "CHATLAYOUT" + String(INTEGER014)
  149.             TSTRING006(INTEGER014) = PPEPath() + FUNCTION003()
  150.             Inc INTEGER014
  151.     End Select
  152.     :LABEL004
  153.     Goto LABEL003
  154.     :LABEL005
  155.     FClose 1
  156.     If (UN_Stat() == "C") Goto LABEL006
  157.     BOOLEAN002 = 1
  158.     WrUNet PcbNode(), "C", UN_Name(), UN_City(), "Chatting with Sysop", ""
  159.     Log "Sysop CHAT active at " + Left(Time(), 5), 0
  160.     SaveScrn
  161.     :LABEL006
  162.     If (BOOLEAN001) Then
  163.         STRING001 = PPEPath() + "CHATLOG." + Replace(Right(PcbNode(), 3), " ", "0")
  164.         If (Exist(STRING001)) Then
  165.             FAppend 1, STRING001, 1, 0
  166.             Goto LABEL007
  167.         Endif
  168.         FCreate 1, STRING001, 1, 0
  169.         :LABEL007
  170.         FPutLn 1, "═══════════════════════════════════════════════════════════════════════════════"
  171.         FPutLn 1, "User: " + Mixed(U_Name()) + " (" + Mixed(U_City) + ")" + Space(47 - Len(U_Name()) + Len(U_City)) + "Date: " + String(Date()) + " (" + Replace(Left(TimeAp(Time()), 5), " ", "0") + Lower(Mid(TimeAp(Time()), 10, 1)) + ")"
  172.         FPutLn 1, "───────────────────────────────────────────────────────────────────────────────"
  173.     Endif
  174.     PROC011()
  175.     PROC002()
  176.     While (!(TSTRING003(0) == Chr(27)) && !(TSTRING003(1) == Chr(27))) Do
  177.         TSTRING003(0) = KInkey()
  178.         TSTRING003(1) = MInkey()
  179.         If (TSTRING003(0) == "") Goto LABEL008
  180.         INTEGER003 = 0
  181.         If ((Asc(TSTRING003(INTEGER003)) < 32) || (Len(TSTRING003(INTEGER003)) > 1)) Then
  182.             PROC007()
  183.         Else
  184.             PROC002()
  185.         Endif
  186.         :LABEL008
  187.         If (TSTRING003(1) == "") Goto LABEL009
  188.         INTEGER003 = 1
  189.         If ((Asc(TSTRING003(INTEGER003)) < 32) || (Len(TSTRING003(INTEGER003)) > 1)) Then
  190.             PROC007()
  191.         Else
  192.             PROC002()
  193.         Endif
  194.         :LABEL009
  195.         If (Abort()) PROC001()
  196.     EndWhile
  197.     If (BOOLEAN003) PROC013()
  198.     Color 7
  199.     If (BOOLEAN002) Then
  200.         RestScrn
  201.         Log "Sysop CHAT ended at " + Left(Time(), 5), 0
  202.     Else
  203.         Cls
  204.     Endif
  205.     PROC014()
  206.     DoIntr 16, B2W(1, 1), 0, B2W(17, 18), 0, 0, 0, 0, 0, 0
  207.     If (INTEGER015 == 0) Goto LABEL010
  208.     AdjTime INTEGER015 - MinLeft()
  209.     PutUser
  210.     :LABEL010
  211.     Delete STRING010
  212.     FClose 1
  213.     If (BOOLEAN001) FClose 2
  214.     StartDisp 2
  215.     Color 15
  216.     KbdStuff Chr(27)
  217.     End
  218.  
  219. ;------------------------------------------------------------------------------
  220.  
  221.     Procedure PROC001()
  222.  
  223.     ResetDisp
  224.     StartDisp 1
  225.     Color 7
  226.     Cls
  227.     For INTEGER001 = 1 To 22
  228.         PrintLn TSTRING008(INTEGER001)
  229.     Next
  230.     Print TSTRING008(23)
  231.     For INTEGER001 = 0 To 1
  232.         TINTEGER004(INTEGER001) = TINTEGER006(INTEGER001)
  233.         TINTEGER005(INTEGER001) = TINTEGER007(INTEGER001)
  234.         TINTEGER011(INTEGER001) = TINTEGER007(INTEGER001)
  235.     Next
  236.     PROC014()
  237.     PROC003()
  238.  
  239.     EndProc
  240.  
  241.  
  242. ;------------------------------------------------------------------------------
  243.  
  244.     Procedure PROC002()
  245.  
  246.     If (BOOLEAN001) Then
  247.         TSTRING004(INTEGER003) = TSTRING004(INTEGER003) + TSTRING003(INTEGER003)
  248.         If ((Len(TSTRING004(0)) >= 79) || (Len(TSTRING004(1)) >= 78)) PROC005()
  249.     Endif
  250.     If (TINTEGER004(INTEGER003) == TINTEGER008(INTEGER003)) Then
  251.         STRING007 = FUNCTION002(ScrText(TINTEGER006(INTEGER003), TINTEGER005(INTEGER003), TINTEGER010(INTEGER003) - 1, 0) + TSTRING003(INTEGER003))
  252.         If (Len(STRING007) == 0) Goto LABEL011
  253.         TINTEGER004(INTEGER003) = TINTEGER004(INTEGER003) + 1 - Len(STRING007)
  254.         PROC003()
  255.         Print Space(Len(STRING007) - 1)
  256.         PROC004()
  257.         TSTRING003(INTEGER003) = STRING007
  258.         :LABEL011
  259.     Else
  260.         PROC003()
  261.     Endif
  262.     Print TSTRING003(INTEGER003)
  263.     If (TINTEGER004(INTEGER003) == TINTEGER008(INTEGER003)) Then
  264.         PROC004()
  265.     Else
  266.         TINTEGER004(INTEGER003) = TINTEGER004(INTEGER003) + Len(TSTRING003(INTEGER003))
  267.     Endif
  268.  
  269.     EndProc
  270.  
  271.  
  272. ;------------------------------------------------------------------------------
  273.  
  274.     Procedure PROC007()
  275.  
  276.     If (TSTRING003(INTEGER003) == Chr(8)) Then
  277.         If (TINTEGER004(INTEGER003) > TINTEGER006(INTEGER003)) Then
  278.             PROC003()
  279.             Print Chr(8) + Chr(32) + Chr(8)
  280.             Dec TINTEGER004(INTEGER003)
  281.             TSTRING004(INTEGER003) = Left(TSTRING004(INTEGER003), Len(TSTRING004(INTEGER003)) - 1)
  282.         Endif
  283.     ElseIf ((TSTRING003(INTEGER003) == "PGDN") && (INTEGER003 == 0)) Then
  284.         Inc INTEGER013
  285.         If (INTEGER013 == INTEGER014) INTEGER013 = 1
  286.         PROC011()
  287.     ElseIf ((TSTRING003(INTEGER003) == "PGUP") && (INTEGER003 == 0)) Then
  288.         Dec INTEGER013
  289.         If (INTEGER013 == 0) INTEGER013 = INTEGER014 - 1
  290.         PROC011()
  291.     Else
  292.         Select Case (TSTRING003(INTEGER003))
  293.             Case Chr(13)
  294.                 If (!(TSTRING004(INTEGER003) == "")) PROC006()
  295.                 PROC004()
  296.             Case Chr(3)
  297.                 Inc TINTEGER012(INTEGER003)
  298.                 For INTEGER001 = 1 To 8
  299.                     If (TINTEGER012(INTEGER003) == INTEGER001 * 16) Then
  300.                         TINTEGER012(INTEGER003) = INTEGER001 * 16 - 16
  301.                         Continue
  302.                     Endif
  303.                     If (TINTEGER012(INTEGER003) == INTEGER001 * 16 + INTEGER001) Then
  304.                         Inc TINTEGER012(INTEGER003)
  305.                     Endif
  306.                 Next
  307.                 If ((TINTEGER012(0) == TINTEGER012(1)) || (TINTEGER012(INTEGER003) == 0)) Inc TINTEGER012(INTEGER003)
  308.                 PROC003()
  309.                 Print Chr(32) + Chr(8)
  310.             Case Chr(23)
  311.                 PROC008()
  312.             Case Chr(7)
  313.                 MPrint Chr(7)
  314.                 For INTEGER001 = 1 To 1760 Step 10
  315.                     Sound INTEGER001
  316.                 Next
  317.                 Sound 0
  318.             Case Chr(20), 0
  319.                 PROC009()
  320.             Case Chr(18)
  321.                 PROC001()
  322.             Endif
  323.     End Select
  324.  
  325.     EndProc
  326.  
  327.  
  328. ;------------------------------------------------------------------------------
  329.  
  330.     Procedure PROC003()
  331.  
  332.     If (!(GetX() == TINTEGER004(INTEGER003)) || !(GetY() == TINTEGER005(INTEGER003))) AnsiPos TINTEGER004(INTEGER003) , TINTEGER005(INTEGER003)
  333.     If (!(CurColor() == TINTEGER012(INTEGER003))) Color TINTEGER012(INTEGER003)
  334.  
  335.     EndProc
  336.  
  337.  
  338. ;------------------------------------------------------------------------------
  339.  
  340.     Procedure PROC004()
  341.  
  342.     If (TINTEGER005(INTEGER003) == TINTEGER009(INTEGER003)) Then
  343.         INTEGER017 = 0
  344.         For INTEGER001 = TINTEGER009(INTEGER003) To TINTEGER011(INTEGER003) Step -1
  345.             STRING001 = ScrText(TINTEGER006(INTEGER003), INTEGER001, TINTEGER010(INTEGER003), 0)
  346.             If (STRING001 == Space(TINTEGER010(INTEGER003))) Goto LABEL012
  347.             Inc INTEGER017
  348.             TSTRING005(INTEGER017) = STRING001
  349.             :LABEL012
  350.             If (INTEGER017 == INTEGER016) Break
  351.         Next
  352.         PROC008()
  353.         For INTEGER001 = INTEGER017 To 1 Step -1
  354.             Print TSTRING005(INTEGER001)
  355.             Inc TINTEGER005(INTEGER003)
  356.             PROC003()
  357.         Next
  358.         TINTEGER011(INTEGER003) = TINTEGER005(INTEGER003)
  359.     Else
  360.         TINTEGER004(INTEGER003) = TINTEGER006(INTEGER003)
  361.         Inc TINTEGER005(INTEGER003)
  362.         PROC003()
  363.     Endif
  364.  
  365.     EndProc
  366.  
  367.  
  368. ;------------------------------------------------------------------------------
  369.  
  370.     Function FUNCTION002(String STRING011) String
  371.  
  372.     :LABEL013
  373.     If (InStr(STRING011, " ") == 0) Goto LABEL014
  374.     STRING011 = Right(STRING011, Len(STRING011) - InStr(STRING011, " "))
  375.     FUNCTION002 = STRING011
  376.     Goto LABEL013
  377.     :LABEL014
  378.  
  379.     EndFunc
  380.  
  381.  
  382. ;------------------------------------------------------------------------------
  383.  
  384.     Procedure PROC005()
  385.  
  386.     STRING001 = FUNCTION002(TSTRING004(INTEGER003))
  387.     If (Len(STRING001) == 0) Goto LABEL015
  388.     TSTRING004(INTEGER003) = Left(TSTRING004(INTEGER003), Len(TSTRING004(INTEGER003)) - Len(STRING001))
  389.     PROC006()
  390.     TSTRING004(INTEGER003) = STRING001
  391.     Goto LABEL016
  392.     :LABEL015
  393.     PROC006()
  394.     :LABEL016
  395.  
  396.     EndProc
  397.  
  398.  
  399. ;------------------------------------------------------------------------------
  400.  
  401.     Procedure PROC006()
  402.  
  403.     If (INTEGER003 == 1) FPut 1, "-"
  404.     FPutLn 1, TSTRING004(INTEGER003)
  405.     TSTRING004(INTEGER003) = ""
  406.  
  407.     EndProc
  408.  
  409.  
  410. ;------------------------------------------------------------------------------
  411.  
  412.     Procedure PROC008()
  413.  
  414.     PROC003()
  415.     TINTEGER004(INTEGER003) = TINTEGER006(INTEGER003)
  416.     STRING001 = Space(TINTEGER010(INTEGER003))
  417.     INTEGER001 = TINTEGER007(INTEGER003) - 1
  418.     INTEGER002 = TINTEGER009(INTEGER003)
  419.     :LABEL017
  420.     If (INTEGER002 == INTEGER001) Goto LABEL018
  421.     AnsiPos TINTEGER004(INTEGER003), INTEGER002
  422.     If (ScrText(1, INTEGER002, 79, 0) == Space(79)) Then
  423.         Print Chr(27) + "[K"
  424.     Else
  425.         Print STRING001
  426.     Endif
  427.     Dec INTEGER002
  428.     Goto LABEL017
  429.     :LABEL018
  430.     TINTEGER005(INTEGER003) = TINTEGER007(INTEGER003)
  431.     PROC003()
  432.  
  433.     EndProc
  434.  
  435.  
  436. ;------------------------------------------------------------------------------
  437.  
  438.     Procedure PROC011()
  439.  
  440.     FOpen 2, TSTRING006(INTEGER013), 0, 0
  441.     FRead 2, STRING001, 4
  442.     FRead 2, STRING001, 10
  443.     For INTEGER001 = 0 To 1
  444.         TINTEGER006(INTEGER001) = FUNCTION004()
  445.         TINTEGER007(INTEGER001) = FUNCTION004()
  446.         TINTEGER008(INTEGER001) = FUNCTION004()
  447.         TINTEGER009(INTEGER001) = FUNCTION004()
  448.     Next
  449.     INTEGER016 = FUNCTION004()
  450.     STRING009 = Chr(FUNCTION004())
  451.     FGet 2, STRING001
  452.     For INTEGER001 = 1 To 23
  453.         FGet 2, TSTRING008(INTEGER001)
  454.         If (!(InStr(TSTRING008(INTEGER001), "@VINYL@") == 0)) PROC012()
  455.     Next
  456.     FClose 2
  457.     PROC001()
  458.     For INTEGER001 = 0 To 1
  459.         STRING001 = ScrText(TINTEGER006(INTEGER001), TINTEGER007(INTEGER001), 1, 1)
  460.         INTEGER002 = ToInt(Mid(STRING001, 3, 1))
  461.         STRING002 = Mid(STRING001, 4, 1)
  462.         If ((Asc(STRING002) > 64) && (Asc(STRING002) < 71)) STRING002 = Asc(STRING002) - 65 + 10
  463.         TINTEGER012(INTEGER001) = 16 * INTEGER002 + ToInt(STRING002)
  464.         TINTEGER010(INTEGER001) = TINTEGER008(INTEGER001) - TINTEGER006(INTEGER001) + 1
  465.     Next
  466.  
  467.     EndProc
  468.  
  469.  
  470. ;------------------------------------------------------------------------------
  471.  
  472.     Procedure PROC009()
  473.  
  474.     SPrint Chr(27) + "[23;1H"
  475.     SaveScrn
  476.     Color 7
  477.     Cls
  478.     Newline
  479.     PrintLn "Microsoft(R) MS-DOS(R) Version 6.22"
  480.     PrintLn "             (C)Copyright Microsoft Corp 1981-1994."
  481.     Newline
  482.     Print Left(PPEPath(), 3), ">TYPE "
  483.     STRING001 = ""
  484.     InputText "_", STRING001, 7, 70
  485.     Newline
  486.     StartDisp 2
  487.     If (Exist(STRING001)) Then
  488.         DispFile STRING001, 1
  489.     Else
  490.         PrintLn "File not found - " + Upper(STRING001)
  491.     Endif
  492.     Newline
  493.     Wait
  494.     StartDisp 1
  495.     Color 7
  496.     RestScrn
  497.     PROC003()
  498.  
  499.     EndProc
  500.  
  501.  
  502. ;------------------------------------------------------------------------------
  503.  
  504.     Function FUNCTION004() Integer
  505.  
  506.     String   STRING013
  507.  
  508.     FUNCTION004 = ToInt(Asc(Left(STRING001, 1)))
  509.     STRING001 = Right(STRING001, Len(STRING001) - 1)
  510.  
  511.     EndFunc
  512.  
  513.  
  514. ;------------------------------------------------------------------------------
  515.  
  516.     Procedure PROC010()
  517.  
  518.     INTEGER001 = InStr(STRING002, "=")
  519.     STRING001 = Mid(STRING002, INTEGER001 + 1, Len(STRING002) - INTEGER001)
  520.     STRING002 = Upper(Left(STRING002, INTEGER001 - 1))
  521.  
  522.     EndProc
  523.  
  524.  
  525. ;------------------------------------------------------------------------------
  526.  
  527.     Function FUNCTION001(String STRING013) Boolean
  528.  
  529.     String   STRING014
  530.  
  531.     If ((((Upper(STRING013) == "YES") || (Upper(STRING013) == "ON")) || (Upper(STRING013) == "TRUE")) || (Upper(STRING013) == "1")) Then
  532.         FUNCTION001 = 1
  533.     Else
  534.         FUNCTION001 = 0
  535.     Endif
  536.  
  537.     EndFunc
  538.  
  539.  
  540. ;------------------------------------------------------------------------------
  541.  
  542.     Function FUNCTION003() String
  543.  
  544.     If (InStr(STRING001, ",") == 0) Then
  545.         FUNCTION003 = STRING001
  546.     Else
  547.         FUNCTION003 = Left(STRING001, InStr(STRING001, ",") - 1)
  548.     Endif
  549.     If (InStr(FUNCTION003, Chr(34)) == 0) Goto LABEL019
  550.     FUNCTION003 = Right(STRING001, Len(STRING001) - InStr(STRING001, Chr(34)))
  551.     FUNCTION003 = Left(FUNCTION003, InStr(FUNCTION003, Chr(34)) - 1)
  552.     :LABEL019
  553.     STRING001 = Right(STRING001, Len(STRING001) - InStr(STRING001, ","))
  554.  
  555.     EndFunc
  556.  
  557.  
  558. ;------------------------------------------------------------------------------
  559.  
  560.     Procedure PROC012()
  561.  
  562.     TSTRING008(INTEGER001) = ReplaceStr(TSTRING008(INTEGER001), "@USER@", Mixed(U_Name()))
  563.     INTEGER002 = InStr(TSTRING008(INTEGER001), "@VINYL@") - 1
  564.     TSTRING008(INTEGER001) = StripStr(TSTRING008(INTEGER001), "@VINYL@")
  565.     STRING001 = Right(TSTRING008(INTEGER001), Len(TSTRING008(INTEGER001)) - INTEGER002)
  566.     TSTRING008(INTEGER001) = Left(TSTRING008(INTEGER001), INTEGER002)
  567.     INTEGER002 = 80 - Len(StripAtx(TSTRING008(INTEGER001))) + Len(StripAtx(STRING001))
  568.     For STRING002 = 1 To INTEGER002
  569.         TSTRING008(INTEGER001) = TSTRING008(INTEGER001) + STRING009
  570.     Next
  571.     TSTRING008(INTEGER001) = TSTRING008(INTEGER001) + STRING001
  572.     If (Len(StripAtx(TSTRING008(INTEGER001))) > 79) TSTRING008(INTEGER001) = Left(TSTRING008(INTEGER001), Len(TSTRING008(INTEGER001)) - 1)
  573.  
  574.     EndProc
  575.  
  576.  
  577. ;------------------------------------------------------------------------------
  578. ;
  579. ; Usage report (before postprocessing)
  580. ;
  581. ; ■ Statements used :
  582. ;
  583. ;    3       End
  584. ;    4       Cls
  585. ;    2       ClrEol
  586. ;    1       Wait
  587. ;    8       Color 
  588. ;    100     Goto 
  589. ;    100     Let 
  590. ;    15      Print 
  591. ;    4       PrintLn 
  592. ;    75      If 
  593. ;    1       DispFile 
  594. ;    1       FCreate 
  595. ;    2       FOpen 
  596. ;    1       FAppend 
  597. ;    4       FClose 
  598. ;    3       FGet 
  599. ;    1       FPut 
  600. ;    4       FPutLn 
  601. ;    1       ResetDisp
  602. ;    4       StartDisp 
  603. ;    1       GetUser
  604. ;    1       PutUser
  605. ;    1       Delete 
  606. ;    1       AdjTime 
  607. ;    2       Log 
  608. ;    1       Delay 
  609. ;    8       Inc 
  610. ;    3       Dec 
  611. ;    4       Newline
  612. ;    1       InputText 
  613. ;    1       KbdStuff 
  614. ;    1       RdUNet 
  615. ;    1       WrUNet 
  616. ;    2       DoIntr 
  617. ;    7       AnsiPos 
  618. ;    2       SaveScrn
  619. ;    2       RestScrn
  620. ;    2       Sound 
  621. ;    1       SPrint 
  622. ;    1       MPrint 
  623. ;    1       PageOff
  624. ;    2       FRead 
  625. ;    14      EndProc
  626. ;    4       EndFunc
  627. ;
  628. ;
  629. ; ■ Functions used :
  630. ;
  631. ;    6       -
  632. ;    4       *
  633. ;    54      +
  634. ;    26      -
  635. ;    55      ==
  636. ;    15      <
  637. ;    12      <=
  638. ;    5       >
  639. ;    26      >=
  640. ;    64      !
  641. ;    29      &&
  642. ;    21      ||
  643. ;    24      Len(
  644. ;    1       Lower()
  645. ;    11      Upper()
  646. ;    4       Mid()
  647. ;    12      Left()
  648. ;    6       Right()
  649. ;    5       Space()
  650. ;    1       Ferr()
  651. ;    27      Chr()
  652. ;    6       Asc()
  653. ;    12      InStr()
  654. ;    1       Abort()
  655. ;    1       Date()
  656. ;    4       Time()
  657. ;    3       U_Name()
  658. ;    2       TimeAp()
  659. ;    3       StripAtx()
  660. ;    2       Replace()
  661. ;    2       String()
  662. ;    5       PPEPath()
  663. ;    3       PcbNode()
  664. ;    1       UN_Stat()
  665. ;    1       UN_Name()
  666. ;    1       UN_City()
  667. ;    2       MinLeft()
  668. ;    4       B2W()
  669. ;    2       Exist()
  670. ;    1       GetX()
  671. ;    1       GetY()
  672. ;    2       GrafMode()
  673. ;    2       PPEName()
  674. ;    1       CurColor()
  675. ;    1       KInkey()
  676. ;    1       MInkey()
  677. ;    4       ScrText()
  678. ;    1       ReplaceStr()
  679. ;    1       StripStr()
  680. ;    3       ToInt()
  681. ;    3       Mixed()
  682. ;    1       OutBytes()
  683. ;
  684. ;------------------------------------------------------------------------------
  685. ;
  686. ; Analysis flags : WAMI
  687. ;
  688. ; W - Write user ■ 5
  689. ;     Program writes a user record. Although this may be normal for a
  690. ;     User Editor, it may also be a way to modify an account level.
  691. ;     ■ Search for : PUTUSER
  692. ;
  693. ; A - Adjust online time remaining ■ 5
  694. ;     Program modify the amount of online time remaining, this may
  695. ;     be a way to bypass time limits
  696. ;     ■ Search for : ADJTIME
  697. ;
  698. ; M - Send text to modem only ■ 4
  699. ;     Some informations are sent only to the modem, not to the local
  700. ;     screen, this is a well known way to make stealth backdoors, Check!
  701. ;     ■ Search for : SENDMODEM, MPRINT, MPRINTLN
  702. ;
  703. ; I - Interrupt call ■ 5
  704. ;     This is rare in PPE... Although it may be a way to replace a PPE
  705. ;     command by its fast interrupt equivalent. Be aware that an
  706. ;     interrupt call may do anything... nasty (formating HD, rebooting,...)
  707. ;     or usefull (fast screen i/o, hardware ressource access,...). Check!
  708. ;     ■ Search for : DOINTR
  709. ;
  710. ;------------------------------------------------------------------------------
  711. ;
  712. ; Postprocessing report
  713. ;
  714. ;    12      For/Next
  715. ;    1       While/EndWhile
  716. ;    20      If/Then or If/Then/Else
  717. ;    2       Select Case
  718. ;
  719. ;------------------------------------------------------------------------------
  720. ;                 AEGiS Corp - Break the routines, code against the machines!
  721. ;------------------------------------------------------------------------------
  722.