home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / DOD-PG10.ZIP / PAGECHAT.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1994-06-29  |  16KB  |  874 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 2.OO (plain) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Integer  INTEGER001
  20.     Integer  INTEGER002
  21.     Integer  INTEGER003
  22.     Integer  INTEGER004
  23.     Integer  INTEGER005
  24.     Integer  INTEGER006
  25.     Integer  INTEGER007
  26.     Integer  INTEGER008
  27.     Integer  INTEGER009
  28.     Integer  INTEGER010
  29.     Integer  INTEGER011
  30.     Integer  INTEGER012
  31.     Integer  INTEGER013
  32.     Integer  INTEGER014
  33.     Integer  INTEGER015
  34.     Integer  INTEGER016
  35.     Integer  INTEGER017
  36.     Integer  INTEGER018
  37.     Integer  INTEGER019
  38.     Integer  INTEGER020
  39.     Integer  INTEGER021
  40.     Integer  INTEGER022
  41.     String   STRING001
  42.     String   STRING002
  43.     String   STRING003
  44.     String   STRING004
  45.     String   STRING005
  46.     Time     TIME001
  47.     Time     TIME002
  48.     Time     TIME003
  49.  
  50. ;------------------------------------------------------------------------------
  51.  
  52.     For INTEGER001 = 1 To 3
  53.         STRING003 = Upper(GetToken())
  54.         If (STRING003 == "/NP") INTEGER018 = 1
  55.         If (STRING003 == "/NC") INTEGER017 = 1
  56.         If (STRING003 == "/NL") INTEGER019 = 1
  57.         If (STRING003 == "/ND") INTEGER020 = 1
  58.     Next
  59.     GetUser
  60.     INTEGER015 = GetY()
  61.     INTEGER016 = GetX()
  62.     AnsiPos 80, U_PageLen
  63.     SaveScrn
  64.     Cls
  65.     INTEGER004 = 1
  66.     INTEGER008 = 1
  67.     INTEGER006 = 1
  68.     INTEGER013 = 1
  69.     INTEGER014 = 0
  70.     INTEGER011 = 0
  71.     INTEGER012 = 1
  72.     TIME003 = Time()
  73.     TIME001 = ReadLine(PCBDat(), 189)
  74.     TIME002 = ReadLine(PCBDat(), 190)
  75.     If (FileInf(PPEPath() + "PAGECHAT.USR", 1) == 1) Then
  76.         FClose 0
  77.         FOpen 0, PPEPath() + "PAGECHAT.USR", 2, 0
  78.         While (Ferr(0) == 0) Do
  79.             FGet 0, STRING005
  80.             If (Upper(Right(STRING005, Len(STRING005) - 2)) == Upper(U_Name())) Then
  81.                 STRING005 = Upper(Left(STRING005, 2))
  82.                 If (STRING005 == "P|") INTEGER011 = 1
  83.                 If (STRING005 == "D|") INTEGER011 = 2
  84.             Endif
  85.         EndWhile
  86.         FClose 0
  87.     Endif
  88.     If (INTEGER018 == 1) Goto LABEL006
  89.     If (INTEGER011 == 1) Goto LABEL001
  90.     If ((((TIME003 >= TIME001) && (TIME003 <= TIME002)) || (CurSec() >= SysopSec())) && (INTEGER011 <> 2)) Goto LABEL001
  91.     Goto LABEL005
  92.     :LABEL001
  93.     Cls
  94.     PrintLn "@POFF@@X1F Page/Chat v1.0                                           Coded by M@X17o@X18o@X10n @X1FSha@X17d@X18o@X10w @X07"
  95.     Newline
  96.     PrintLn "@X0F═@X07══@X08════════════════════════════════════════════════════════════════════════════@X07"
  97.     STRING003 = "What you want?"
  98.     Gosub LABEL016
  99.     Print " @X07[@X08∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙∙@X07]"
  100.     FreshLine
  101.     PrintLn "@X0F═@X07══@X08════════════════════════════════════════════════════════════════════════════"
  102.     AnsiPos 17, 4
  103.     Color 15
  104.     :LABEL002
  105.     STRING001 = Inkey()
  106.     If (STRING001 == "") Goto LABEL002
  107.     If (STRING001 == Chr(13)) Then
  108.         Goto LABEL003
  109.     Endif
  110.     If (STRING001 == Chr(27)) Then
  111.         Cls
  112.         Sound 0
  113.         STRING003 = "Aborting page...."
  114.         Gosub LABEL016
  115.         Cls
  116.         RestScrn
  117.         AnsiPos INTEGER016, INTEGER015
  118.         End
  119.     Endif
  120.     If (STRING001 == Chr(8)) Then
  121.         If (INTEGER004 == 1) Goto LABEL002
  122.         INTEGER002 = GetX() - 1
  123.         INTEGER003 = GetY()
  124.         AnsiPos INTEGER002, INTEGER003
  125.         Color 8
  126.         Print "∙"
  127.         Color 15
  128.         STRING002 = Left(STRING002, Len(STRING002) - 1)
  129.         INTEGER004 = INTEGER004 - 1
  130.         Print STRING001
  131.         Goto LABEL002
  132.     Endif
  133.     If (INTEGER004 >= 63) Goto LABEL002
  134.     If (STRING001 == " ") Then
  135.         Color 8
  136.         Print "·"
  137.         Color 15
  138.     Else
  139.         Print STRING001
  140.     Endif
  141.     STRING002 = STRING002 + STRING001
  142.     INTEGER004 = INTEGER004 + 1
  143.     STRING001 = ""
  144.     Goto LABEL002
  145.     :LABEL003
  146.     If (INTEGER004 == 1) Then
  147.         :LABEL004
  148.         Cls
  149.         Sound 0
  150.         STRING003 = "Aborting page...."
  151.         Log "PAGE/CHAT: aborting page.", 0
  152.         Gosub LABEL016
  153.         Cls
  154.         RestScrn
  155.         AnsiPos INTEGER016, INTEGER015
  156.         End
  157.     Endif
  158.     If (FileInf(PPEPath() + "PAGECHAT.BAT", 1) == 0) Then
  159.         Color 143
  160.         AnsiPos 1, 9
  161.         PrintLn "                          Press (Esc) for abort paging."
  162.         Color 7
  163.         AnsiPos 1, 7
  164.     Endif
  165.     Log "PAGE/CHAT: paging operator", 0
  166.     AnsiPos 1, 9
  167.     Color 143
  168.     SPrintLn "═══════════════════════════════════════════════════════════════════════════════"
  169.     Color 11
  170.     SPrintLn " User name............" + U_Name()
  171.     SPrintLn " Locations/Group......" + U_City
  172.     SPrintLn " Security level.......", U_Sec
  173.     SPrintLn " Files downloaded.....", U_Fdl()
  174.     SPrintLn " Files uploaded.......", U_Ful()
  175.     SPrintLn " User record number...", U_RecNum(U_Name())
  176.     Color 143
  177.     SPrintLn "═══════════════════════════════════════════════════════════════════════════════"
  178.     AnsiPos 1, 18
  179.     SPrintLn "           Press (Space) to acknowledge Page.  Or (Esc) for abort Page."
  180.     Color 15
  181.     If (FileInf(PPEPath() + "PAGECHAT.BAT", 1) == 1) Then
  182.         AnsiPos 1, 7
  183.         STRING003 = "Paging. Please wait."
  184.         Gosub LABEL016
  185.         Shell 1, STRING003, PPEPath() + "PAGECHAT.BAT", ""
  186.         Print STRING003
  187.         Wait
  188.     Else
  189.         AnsiPos 1, 7
  190.         STRING003 = "Paging"
  191.         Gosub LABEL016
  192.         For INTEGER010 = 1 To 73
  193.             If (KInkey() == Chr(27)) Break
  194.             STRING003 = "."
  195.             Gosub LABEL016
  196.             If (FileInf(PPEPath() + "PAGECHAT.SND", 1) == 1) Then
  197.                 FClose 0
  198.                 FOpen 0, PPEPath() + "PAGECHAT.SND", 0, 0
  199.                 While (Ferr(0) == 0) Do
  200.                     If (KInkey() == " ") Goto LABEL006
  201.                     If (KInkey() == Chr(27)) Goto LABEL005
  202.                     If (Inkey() == Chr(27)) Goto LABEL004
  203.                     FGet 0, STRING003
  204.                     Sound STRING003
  205.                     FGet 0, STRING003
  206.                     Delay STRING003
  207.                     If (KInkey() == Chr(27)) Goto LABEL005
  208.                 EndWhile
  209.                 FClose 0
  210.                 Continue
  211.             Endif
  212.             For INTEGER005 = 1 To 1000 Step 100
  213.                 If (KInkey() == " ") Goto LABEL006
  214.                 If (KInkey() == Chr(27)) Goto LABEL005
  215.                 If (Inkey() == Chr(27)) Goto LABEL004
  216.                 Sound 1000 + INTEGER005
  217.             Next
  218.             For INTEGER005 = 1000 To 1 Step -100
  219.                 If (KInkey() == " ") Goto LABEL006
  220.                 If (KInkey() == Chr(27)) Goto LABEL005
  221.                 If (Inkey() == Chr(27)) Goto LABEL004
  222.                 Sound 1000 + INTEGER005
  223.             Next
  224.             If (KInkey() == Chr(27)) Break
  225.         Next
  226.     Endif
  227.     :LABEL005
  228.     Cls
  229.     Sound 0
  230.     STRING003 = "Sorry. Operator sleep or busy."
  231.     Gosub LABEL016
  232.     Delay 50
  233.     Cls
  234.     RestScrn
  235.     AnsiPos INTEGER016, INTEGER015
  236.     End
  237.     :LABEL006
  238.     FClose 0
  239.     Sound 0
  240.     If (INTEGER017 == 1) Then
  241.         Chat
  242.         End
  243.     Endif
  244.     Cls
  245.     STRING003 = "Chat Begin...."
  246.     Gosub LABEL016
  247.     If (INTEGER019 == 0) Then
  248.         STRING004 = U_RecNum(U_Name())
  249.         STRING004 = PPEPath() + "PAGECHAT." + STRING004
  250.         FAppend 0, STRING004, 2, 0
  251.         FPutLn 0, "=============================================================================="
  252.         FPutLn 0, "Chat begin :", Date(), "  ", Time()
  253.         FPutLn 0, "------------------------------------------------------------------------------"
  254.     Endif
  255.     :LABEL007
  256.     Cls
  257.     If (INTEGER012 == 1) Then
  258.         PrintLn "@POFF@@X1F Page/Chat v1.0                                           Coded by M@X17o@X18o@X10n @X1FSha@X17d@X18o@X10w @X07"
  259.         Newline
  260.         PrintLn "@X08[@X0FSystem Operator@X08]"
  261.         PrintLn "@X0F═@X07══@X08════════════════════════════════════════════════════════════════════════════"
  262.         Newline
  263.         Newline
  264.         Newline
  265.         Newline
  266.         Newline
  267.         Newline
  268.         PrintLn "@X0F═@X07══@X08════════════════════════════════════════════════════════════════════════════"
  269.         PrintLn "@X08"
  270.         PrintLn "[@X0F@USER@@X08]"
  271.         PrintLn "@X0F═@X07══@X08════════════════════════════════════════════════════════════════════════════"
  272.         Newline
  273.         Newline
  274.         Newline
  275.         Newline
  276.         Newline
  277.         Newline
  278.         PrintLn "@X0F═@X07══@X08════════════════════════════════════════════════════════════════════════════@X07"
  279.         AnsiPos 1, 5
  280.     Endif
  281.     If (INTEGER012 == 2) Then
  282.         PrintLn "@POFF@@X1F Page/Chat v1.0                                           Coded by M@X17o@X18o@X10n @X1FSha@X17d@X18o@X10w @X07"
  283.         Newline
  284.         PrintLn "@X08[@X0FSystem Operator@X08]                                            [@X0F@USER@@X08]"
  285.         PrintLn "@X0F══@X07══@X08══════════════════════════════════╦════════════════════════════════════@X07══@X0F══"
  286.         PrintLn "@X0F                                      @X08║"
  287.         PrintLn "@X08                                      ║"
  288.         PrintLn "@X08                                      ║"
  289.         PrintLn "@X08                                      ║"
  290.         PrintLn "@X08                                      ║"
  291.         PrintLn "@X08                                      ║"
  292.         PrintLn "@X08                                      ║"
  293.         PrintLn "@X08                                      ║"
  294.         PrintLn "@X08                                      ║"
  295.         PrintLn "@X08                                      ║"
  296.         PrintLn "@X08                                      ║"
  297.         PrintLn "@X08                                      ║"
  298.         PrintLn "@X08                                      ║"
  299.         PrintLn "@X08                                      ║"
  300.         PrintLn "@X08                                      ║"
  301.         PrintLn "@X08                                      @X07║"
  302.         PrintLn "@X07                                      @X0F║"
  303.         AnsiPos 1, 5
  304.     Endif
  305.     If (INTEGER012 == 3) Then
  306.         PrintLn "@POFF@@X1F Page/Chat v1.0                                           Coded by M@X17o@X18o@X10n @X1FSha@X17d@X18o@X10w @X07"
  307.         Newline
  308.         PrintLn "@X08[@X0FSystem Operator@X08] @X07vs @X08[@X0F@USER@@X08]"
  309.         PrintLn "@X0F══@X07══@X08═══════════════════════════════════════════════════════════════════════@X07══@X0F══"
  310.         AnsiPos 1, 21
  311.         PrintLn "@X0F═@X07══@X08════════════════════════════════════════════════════════════════════════════@X07"
  312.         AnsiPos 1, 5
  313.     Endif
  314.     If (INTEGER012 == 1) Then
  315.         :LABEL008
  316.         STRING001 = ""
  317.         STRING001 = KInkey()
  318.         If (STRING001 <> "") Then
  319.             If (STRING001 == "@") Gosub LABEL017
  320.             If (STRING001 == "DOWN") Then
  321.                 INTEGER004 = 1
  322.                 INTEGER013 = 1
  323.                 INTEGER014 = 0
  324.                 INTEGER008 = 1
  325.                 INTEGER009 = 0
  326.                 INTEGER006 = 1
  327.                 INTEGER007 = 0
  328.                 INTEGER011 = 0
  329.                 INTEGER001 = 0
  330.                 Goto LABEL007
  331.             Endif
  332.             If (STRING001 == Chr(27)) Then
  333.                 If (Strip(ScrText(1, INTEGER009 + 5, 79, 0), " ") <> "") FPutLn 0, "SYSOP : " + ScrText(1, INTEGER009 + 5, 79, 0)
  334.                 If (Strip(ScrText(1, INTEGER007 + 15, 79, 0), " ") <> "") FPutLn 0, "USER  : " + ScrText(1, INTEGER007 + 15, 79, 0)
  335.                 FPutLn 0, "------------------------------------------------------------------------------"
  336.                 FPutLn 0, "Chat ended :", Date(), "  ", Time()
  337.                 FPutLn 0, "=============================================================================="
  338.                 FPutLn 0, ""
  339.                 FClose 0
  340.                 Cls
  341.                 STRING003 = "Chat Ended...."
  342.                 Gosub LABEL016
  343.                 Cls
  344.                 RestScrn
  345.                 AnsiPos INTEGER016, INTEGER015
  346.                 End
  347.             Endif
  348.             If (STRING001 == Chr(13)) Then
  349.                 If (Strip(ScrText(1, INTEGER009 + 5, 79, 0), " ") <> "") FPutLn 0, "SYSOP : " + ScrText(1, INTEGER009 + 5, 79, 0)
  350.                 INTEGER008 = 1
  351.                 INTEGER009 = INTEGER009 + 1
  352.                 If (INTEGER009 > 5) Gosub LABEL009
  353.                 AnsiPos 1 + INTEGER008, 5 + INTEGER009
  354.                 Goto LABEL008
  355.             Endif
  356.             If (STRING001 == Chr(8)) Then
  357.                 If (INTEGER008 == 1) Goto LABEL008
  358.                 AnsiPos INTEGER008, 5 + INTEGER009
  359.                 Print " "
  360.                 INTEGER008 = INTEGER008 - 1
  361.                 Print STRING001
  362.                 Goto LABEL008
  363.             Endif
  364.             If (INTEGER008 >= 78) Then
  365.                 If (Strip(ScrText(1, INTEGER009 + 5, 79, 0), " ") <> "") FPutLn 0, "SYSOP : " + ScrText(1, INTEGER009 + 5, 79, 0)
  366.                 INTEGER008 = 1
  367.                 INTEGER009 = INTEGER009 + 1
  368.                 If (INTEGER009 > 5) Gosub LABEL009
  369.             Endif
  370.             AnsiPos 1 + INTEGER008, 5 + INTEGER009
  371.             INTEGER008 = INTEGER008 + 1
  372.             Print STRING001
  373.             If (INTEGER008 > 79) Then
  374.                 If (Strip(ScrText(1, INTEGER009 + 5, 79, 0), " ") <> "") FPutLn 0, "SYSOP : " + ScrText(1, INTEGER009 + 5, 79, 0)
  375.                 INTEGER008 = 1
  376.                 INTEGER009 = INTEGER009 + 1
  377.             Endif
  378.             Goto LABEL008
  379.         Endif
  380.         STRING001 = ""
  381.         STRING001 = MInkey()
  382.         If ((STRING001 <> "") && (Len(STRING001) == 1)) Then
  383.             If (STRING001 == Chr(13)) Then
  384.                 If (Strip(ScrText(1, INTEGER007 + 15, 79, 0), " ") <> "") FPutLn 0, "USER  : " + ScrText(1, INTEGER007 + 15, 79, 0)
  385.                 INTEGER006 = 1
  386.                 INTEGER007 = INTEGER007 + 1
  387.                 If (INTEGER007 > 5) Gosub LABEL010
  388.                 AnsiPos 1 + INTEGER006, 15 + INTEGER007
  389.                 Goto LABEL008
  390.             Endif
  391.             If (STRING001 == Chr(8)) Then
  392.                 If (INTEGER006 == 1) Goto LABEL008
  393.                 AnsiPos INTEGER006, 15 + INTEGER007
  394.                 Print " "
  395.                 INTEGER006 = INTEGER006 - 1
  396.                 Print STRING001
  397.                 Goto LABEL008
  398.             Endif
  399.             If (INTEGER006 >= 78) Then
  400.                 If (Strip(ScrText(1, INTEGER007 + 15, 79, 0), " ") <> "") FPutLn 0, "USER  : " + ScrText(1, INTEGER007 + 15, 79, 0)
  401.                 INTEGER006 = 1
  402.                 INTEGER007 = INTEGER007 + 1
  403.                 If (INTEGER007 > 5) Gosub LABEL010
  404.             Endif
  405.             AnsiPos 1 + INTEGER006, 15 + INTEGER007
  406.             INTEGER006 = INTEGER006 + 1
  407.             Print STRING001
  408.             If (INTEGER006 > 79) Then
  409.                 If (Strip(ScrText(1, INTEGER007 + 15, 79, 0), " ") <> "") FPutLn 0, "USER  : " + ScrText(1, INTEGER007 + 15, 79, 0)
  410.                 INTEGER006 = 1
  411.                 INTEGER007 = INTEGER007 + 1
  412.             Endif
  413.             Goto LABEL008
  414.         Endif
  415.         Goto LABEL008
  416.         :LABEL009
  417.         For INTEGER001 = 1 To 5
  418.             STRING003 = ScrText(1, 5 + INTEGER001, 79, 0)
  419.             AnsiPos 1, 4 + INTEGER001
  420.             Print "                                                                              "
  421.             AnsiPos 1, 4 + INTEGER001
  422.             Print STRING003
  423.         Next
  424.         AnsiPos 1, 10
  425.         Print "                                                                              "
  426.         AnsiPos 1, 4 + INTEGER001
  427.         INTEGER009 = 5
  428.         Return
  429.         :LABEL010
  430.         For INTEGER001 = 1 To 5
  431.             STRING003 = ScrText(1, 15 + INTEGER001, 79, 0)
  432.             AnsiPos 1, 14 + INTEGER001
  433.             Print "                                                                              "
  434.             AnsiPos 1, 14 + INTEGER001
  435.             Print STRING003
  436.         Next
  437.         AnsiPos 1, 20
  438.         Print "                                                                              "
  439.         AnsiPos 1, 14 + INTEGER001
  440.         INTEGER007 = 5
  441.         Return
  442.     Endif
  443.     If (INTEGER012 == 2) Then
  444.         :LABEL011
  445.         STRING001 = ""
  446.         STRING001 = KInkey()
  447.         If (STRING001 <> "") Then
  448.             If (STRING001 == "@") Gosub LABEL017
  449.             If (STRING001 == "DOWN") Then
  450.                 INTEGER004 = 1
  451.                 INTEGER008 = 1
  452.                 INTEGER009 = 0
  453.                 INTEGER006 = 1
  454.                 INTEGER007 = 0
  455.                 INTEGER013 = 1
  456.                 INTEGER014 = 0
  457.                 INTEGER011 = 0
  458.                 INTEGER001 = 0
  459.                 Goto LABEL007
  460.             Endif
  461.             If (STRING001 == Chr(27)) Then
  462.                 If (Strip(ScrText(1, INTEGER009 + 5, 36, 0), " ") <> "") FPutLn 0, "SYSOP : " + ScrText(1, INTEGER009 + 5, 36, 0)
  463.                 If (Strip(ScrText(41, INTEGER007 + 5, 36, 0), " ") <> "") FPutLn 0, "USER  : " + ScrText(41, INTEGER007 + 5, 36, 0)
  464.                 FPutLn 0, "------------------------------------------------------------------------------"
  465.                 FPutLn 0, "Chat ended :", Date(), "  ", Time()
  466.                 FPutLn 0, "=============================================================================="
  467.                 FPutLn 0, ""
  468.                 FClose 0
  469.                 Cls
  470.                 STRING003 = "Chat Ended...."
  471.                 Gosub LABEL016
  472.                 Cls
  473.                 RestScrn
  474.                 AnsiPos INTEGER016, INTEGER015
  475.                 End
  476.             Endif
  477.             If (STRING001 == Chr(13)) Then
  478.                 If (Strip(ScrText(1, INTEGER009 + 5, 36, 0), " ") <> "") FPutLn 0, "SYSOP : " + ScrText(1, INTEGER009 + 5, 36, 0)
  479.                 INTEGER008 = 1
  480.                 INTEGER009 = INTEGER009 + 1
  481.                 If (INTEGER009 > 16) Gosub LABEL012
  482.                 AnsiPos 1 + INTEGER008, 5 + INTEGER009
  483.                 Goto LABEL011
  484.             Endif
  485.             If (STRING001 == Chr(8)) Then
  486.                 If (INTEGER008 == 1) Goto LABEL011
  487.                 AnsiPos INTEGER008, 5 + INTEGER009
  488.                 Print " "
  489.                 INTEGER008 = INTEGER008 - 1
  490.                 Print STRING001
  491.                 Goto LABEL011
  492.             Endif
  493.             If (INTEGER008 >= 35) Then
  494.                 If (Strip(ScrText(1, INTEGER009 + 5, 36, 0), " ") <> "") FPutLn 0, "SYSOP : " + ScrText(1, INTEGER009 + 5, 36, 0)
  495.                 INTEGER008 = 1
  496.                 INTEGER009 = INTEGER009 + 1
  497.                 If (INTEGER009 > 16) Gosub LABEL012
  498.             Endif
  499.             AnsiPos 1 + INTEGER008, 5 + INTEGER009
  500.             INTEGER008 = INTEGER008 + 1
  501.             Print STRING001
  502.             If (INTEGER008 > 36) Then
  503.                 If (Strip(ScrText(1, INTEGER009 + 5, 36, 0), " ") <> "") FPutLn 0, "SYSOP : " + ScrText(1, INTEGER009 + 5, 36, 0)
  504.                 INTEGER008 = 1
  505.                 INTEGER009 = INTEGER009 + 1
  506.             Endif
  507.             Goto LABEL011
  508.         Endif
  509.         STRING001 = ""
  510.         STRING001 = MInkey()
  511.         If ((STRING001 <> "") && (Len(STRING001) == 1)) Then
  512.             If (STRING001 == Chr(27)) End
  513.             If (STRING001 == Chr(13)) Then
  514.                 If (Strip(ScrText(41, INTEGER007 + 5, 36, 0), " ") <> "") FPutLn 0, "USER  : " + ScrText(41, INTEGER007 + 5, 36, 0)
  515.                 INTEGER006 = 1
  516.                 INTEGER007 = INTEGER007 + 1
  517.                 If (INTEGER007 > 16) Gosub LABEL013
  518.                 AnsiPos 41 + INTEGER006, 5 + INTEGER007
  519.                 Goto LABEL011
  520.             Endif
  521.             If (STRING001 == Chr(8)) Then
  522.                 If (INTEGER006 == 1) Goto LABEL011
  523.                 AnsiPos 40 + INTEGER006, 5 + INTEGER007
  524.                 Print " "
  525.                 INTEGER006 = INTEGER006 - 1
  526.                 Print STRING001
  527.                 Goto LABEL011
  528.             Endif
  529.             If (INTEGER006 >= 35) Then
  530.                 If (Strip(ScrText(41, INTEGER007 + 5, 36, 0), " ") <> "") FPutLn 0, "USER  : " + ScrText(41, INTEGER007 + 5, 36, 0)
  531.                 INTEGER006 = 1
  532.                 INTEGER007 = INTEGER007 + 1
  533.                 If (INTEGER007 > 16) Gosub LABEL013
  534.             Endif
  535.             AnsiPos 41 + INTEGER006, 5 + INTEGER007
  536.             INTEGER006 = INTEGER006 + 1
  537.             Print STRING001
  538.             If (INTEGER006 > 36) Then
  539.                 If (Strip(ScrText(41, INTEGER007 + 5, 36, 0), " ") <> "") FPutLn 0, "USER  : " + ScrText(41, INTEGER007 + 5, 36, 0)
  540.                 INTEGER006 = 1
  541.                 INTEGER007 = INTEGER007 + 1
  542.             Endif
  543.             Goto LABEL011
  544.         Endif
  545.         Goto LABEL011
  546.         :LABEL012
  547.         For INTEGER001 = 1 To 16
  548.             STRING003 = ScrText(1, 5 + INTEGER001, 36, 0)
  549.             AnsiPos 1, 4 + INTEGER001
  550.             Print "                                   "
  551.             AnsiPos 1, 4 + INTEGER001
  552.             Print STRING003
  553.         Next
  554.         AnsiPos 1, 21
  555.         Print "                                   "
  556.         AnsiPos 1, 4 + INTEGER001
  557.         INTEGER009 = 16
  558.         Return
  559.         :LABEL013
  560.         For INTEGER001 = 1 To 16
  561.             STRING003 = ScrText(41, 5 + INTEGER001, 36, 0)
  562.             AnsiPos 41, 4 + INTEGER001
  563.             Print "                                   "
  564.             AnsiPos 41, 4 + INTEGER001
  565.             Print STRING003
  566.         Next
  567.         AnsiPos 41, 21
  568.         Print "                                   "
  569.         AnsiPos 41, 4 + INTEGER001
  570.         INTEGER007 = 16
  571.         Return
  572.     Endif
  573.     If (INTEGER012 == 3) Then
  574.         :LABEL014
  575.         STRING001 = ""
  576.         STRING001 = KInkey()
  577.         If (STRING001 <> "") Then
  578.             If (STRING001 == "@") Gosub LABEL017
  579.             If (STRING001 == "DOWN") Then
  580.                 INTEGER004 = 1
  581.                 INTEGER008 = 1
  582.                 INTEGER009 = 0
  583.                 INTEGER006 = 1
  584.                 INTEGER007 = 0
  585.                 INTEGER011 = 0
  586.                 INTEGER013 = 1
  587.                 INTEGER014 = 0
  588.                 INTEGER001 = 0
  589.                 Goto LABEL007
  590.             Endif
  591.             If (STRING001 == Chr(27)) Then
  592.                 If (Strip(ScrText(1, INTEGER014 + 5, 79, 0), " ") <> "") FPutLn 0, ScrText(1, INTEGER014 + 5, 79, 0)
  593.                 FPutLn 0, "------------------------------------------------------------------------------"
  594.                 FPutLn 0, "Chat ended :", Date(), "  ", Time()
  595.                 FPutLn 0, "=============================================================================="
  596.                 FPutLn 0, ""
  597.                 FClose 0
  598.                 Cls
  599.                 STRING003 = "Chat Ended...."
  600.                 Gosub LABEL016
  601.                 Cls
  602.                 RestScrn
  603.                 AnsiPos INTEGER016, INTEGER015
  604.                 End
  605.             Endif
  606.             If (STRING001 == Chr(13)) Then
  607.                 If (Strip(ScrText(1, INTEGER014 + 5, 79, 0), " ") <> "") FPutLn 0, ScrText(1, INTEGER014 + 5, 79, 0)
  608.                 INTEGER013 = 1
  609.                 INTEGER014 = INTEGER014 + 1
  610.                 If (INTEGER014 > 15) Gosub LABEL015
  611.                 AnsiPos 1 + INTEGER013, 5 + INTEGER014
  612.                 Goto LABEL014
  613.             Endif
  614.             If (STRING001 == Chr(8)) Then
  615.                 If (INTEGER013 == 1) Goto LABEL014
  616.                 INTEGER002 = GetX() - 1
  617.                 INTEGER003 = GetY()
  618.                 AnsiPos INTEGER002, INTEGER003
  619.                 Print " "
  620.                 INTEGER013 = INTEGER013 - 1
  621.                 Print STRING001
  622.                 Goto LABEL014
  623.             Endif
  624.             If (INTEGER008 >= 76) Then
  625.                 If (Strip(ScrText(1, INTEGER014 + 5, 79, 0), " ") <> "") FPutLn 0, ScrText(1, INTEGER014 + 5, 79, 0)
  626.                 INTEGER013 = 1
  627.                 INTEGER014 = INTEGER014 + 1
  628.                 If (INTEGER014 > 15) Gosub LABEL015
  629.             Endif
  630.             AnsiPos 1 + INTEGER013, 5 + INTEGER014
  631.             INTEGER013 = INTEGER013 + 1
  632.             Print STRING001
  633.             If (INTEGER013 > 77) Then
  634.                 If (Strip(ScrText(1, INTEGER014 + 5, 79, 0), " ") <> "") FPutLn 0, ScrText(1, INTEGER014 + 5, 79, 0)
  635.                 INTEGER013 = 1
  636.                 INTEGER014 = INTEGER014 + 1
  637.             Endif
  638.             Goto LABEL014
  639.         Endif
  640.         STRING001 = ""
  641.         STRING001 = MInkey()
  642.         If ((STRING001 <> "") && (Len(STRING001) == 1)) Then
  643.             If (STRING001 == Chr(27)) End
  644.             If (STRING001 == Chr(13)) Then
  645.                 If (Strip(ScrText(1, INTEGER014 + 5, 79, 0), " ") <> "") FPutLn 0, ScrText(1, INTEGER014 + 5, 79, 0)
  646.                 INTEGER013 = 1
  647.                 INTEGER014 = INTEGER014 + 1
  648.                 If (INTEGER014 > 15) Gosub LABEL015
  649.                 AnsiPos 1 + INTEGER013, 5 + INTEGER014
  650.                 Goto LABEL014
  651.             Endif
  652.             If (STRING001 == Chr(8)) Then
  653.                 If (INTEGER013 == 1) Goto LABEL014
  654.                 INTEGER002 = GetX() - 1
  655.                 INTEGER003 = GetY()
  656.                 AnsiPos INTEGER002, INTEGER003
  657.                 Print " "
  658.                 INTEGER013 = INTEGER013 - 1
  659.                 Print STRING001
  660.                 Goto LABEL014
  661.             Endif
  662.             If (INTEGER008 >= 76) Then
  663.                 If (Strip(ScrText(1, INTEGER014 + 5, 79, 0), " ") <> "") FPutLn 0, ScrText(1, INTEGER014 + 5, 79, 0)
  664.                 INTEGER013 = 1
  665.                 INTEGER014 = INTEGER014 + 1
  666.                 If (INTEGER014 > 15) Gosub LABEL015
  667.             Endif
  668.             AnsiPos 1 + INTEGER013, 5 + INTEGER014
  669.             INTEGER013 = INTEGER013 + 1
  670.             Print STRING001
  671.             If (INTEGER013 > 77) Then
  672.                 If (Strip(ScrText(1, INTEGER014 + 5, 79, 0), " ") <> "") FPutLn 0, ScrText(1, INTEGER014 + 5, 79, 0)
  673.                 INTEGER013 = 1
  674.                 INTEGER014 = INTEGER014 + 1
  675.             Endif
  676.             Goto LABEL014
  677.         Endif
  678.         Goto LABEL014
  679.         :LABEL015
  680.         For INTEGER001 = 1 To 15
  681.             STRING003 = ScrText(1, 5 + INTEGER001, 79, 0)
  682.             AnsiPos 1, 4 + INTEGER001
  683.             Print "                                                                              "
  684.             AnsiPos 1, 4 + INTEGER001
  685.             Print STRING003
  686.         Next
  687.         AnsiPos 1, 20
  688.         Print "                                                                              "
  689.         AnsiPos 1, 4 + INTEGER001
  690.         INTEGER014 = 15
  691.         Return
  692.     Endif
  693.     :LABEL016
  694.     If (INTEGER020 == 1) Then
  695.         INTEGER021 = 0
  696.     Else
  697.         INTEGER021 = 2
  698.     Endif
  699.     INTEGER002 = GetX()
  700.     INTEGER003 = GetY()
  701.     INTEGER001 = 0
  702.     While (((1 < 0) && (INTEGER001 >= Len(STRING003) - 1)) || ((1 >= 0) && (INTEGER001 <= Len(STRING003) - 1))) Do
  703.         If (KInkey() <> "") Then
  704.             INTEGER022 = INTEGER021
  705.             INTEGER021 = 0
  706.         Endif
  707.         AnsiPos INTEGER002 + INTEGER001, INTEGER003
  708.         Color 8
  709.         Print Left(Right(STRING003, Len(STRING003) - INTEGER001), 1)
  710.         Delay INTEGER021
  711.         AnsiPos INTEGER002 + INTEGER001, INTEGER003
  712.         Color 7
  713.         Print Left(Right(STRING003, Len(STRING003) - INTEGER001), 1)
  714.         Delay INTEGER021
  715.         AnsiPos INTEGER002 + INTEGER001, INTEGER003
  716.         Color 15
  717.         Print Left(Right(STRING003, Len(STRING003) - INTEGER001), 1)
  718.         Delay INTEGER021
  719.         INTEGER001 = INTEGER001 + 1
  720.     EndWhile
  721.     If (INTEGER022 <> 0) Then
  722.         INTEGER021 = INTEGER022
  723.         INTEGER022 = 0
  724.     Endif
  725.     Return
  726.     :LABEL017
  727.     AnsiPos 1, 22
  728.     Color 31
  729.     SPrint "1 - Horizontal chat.  2 - Vertical chat.  3 - No split chat.  4 - Clear screen."
  730.     Color 7
  731.     :LABEL018
  732.     STRING003 = Inkey()
  733.     If ((((STRING003 <> "1") && (STRING003 <> "2")) && (STRING003 <> "3")) && (STRING003 <> "4")) Goto LABEL018
  734.     AnsiPos 1, 22
  735.     SPrintLn "                                                                              "
  736.     If (STRING003 == "4") Then
  737.         INTEGER004 = 1
  738.         INTEGER008 = 1
  739.         INTEGER009 = 0
  740.         INTEGER006 = 1
  741.         INTEGER013 = 1
  742.         INTEGER014 = 0
  743.         INTEGER007 = 0
  744.         INTEGER011 = 0
  745.         INTEGER001 = 0
  746.         Goto LABEL007
  747.     Endif
  748.     FPutLn 0, "[", STRING003, "]---------------------------------------------------------------------------"
  749.     INTEGER012 = STRING003
  750.     INTEGER004 = 1
  751.     INTEGER013 = 1
  752.     INTEGER014 = 0
  753.     INTEGER008 = 1
  754.     INTEGER009 = 0
  755.     INTEGER006 = 1
  756.     INTEGER007 = 0
  757.     INTEGER011 = 0
  758.     INTEGER001 = 0
  759.     Goto LABEL007
  760.  
  761. ;------------------------------------------------------------------------------
  762. ;
  763. ; Usage report (before postprocessing)
  764. ;
  765. ; ■ Statements used :
  766. ;
  767. ;    9       End
  768. ;    16      Cls
  769. ;    1       Wait
  770. ;    16      Color 
  771. ;    141     Goto 
  772. ;    190     Let 
  773. ;    42      Print 
  774. ;    36      PrintLn 
  775. ;    141     If 
  776. ;    2       FOpen 
  777. ;    1       FAppend 
  778. ;    8       FClose 
  779. ;    3       FGet 
  780. ;    39      FPutLn 
  781. ;    1       GetUser
  782. ;    2       Log 
  783. ;    26      Gosub 
  784. ;    6       Return
  785. ;    5       Delay 
  786. ;    16      Newline
  787. ;    1       Shell 
  788. ;    62      AnsiPos 
  789. ;    1       FreshLine
  790. ;    1       SaveScrn
  791. ;    6       RestScrn
  792. ;    7       Sound 
  793. ;    1       Chat
  794. ;    1       SPrint 
  795. ;    10      SPrintLn 
  796. ;
  797. ;
  798. ; ■ Functions used :
  799. ;
  800. ;    3       -
  801. ;    163     +
  802. ;    17      -
  803. ;    76      ==
  804. ;    36      <>
  805. ;    10      <
  806. ;    11      <=
  807. ;    18      >
  808. ;    29      >=
  809. ;    70      !
  810. ;    28      &&
  811. ;    11      ||
  812. ;    10      Len(
  813. ;    4       Upper()
  814. ;    5       Left()
  815. ;    4       Right()
  816. ;    2       Ferr()
  817. ;    29      Chr()
  818. ;    4       Date()
  819. ;    5       Time()
  820. ;    4       U_Name()
  821. ;    1       U_Ful()
  822. ;    1       U_Fdl()
  823. ;    23      Strip()
  824. ;    5       Inkey()
  825. ;    2       PCBDat()
  826. ;    8       PPEPath()
  827. ;    2       ReadLine()
  828. ;    1       SysopSec()
  829. ;    1       CurSec()
  830. ;    1       GetToken()
  831. ;    5       GetX()
  832. ;    5       GetY()
  833. ;    4       FileInf()
  834. ;    13      KInkey()
  835. ;    3       MInkey()
  836. ;    2       U_RecNum()
  837. ;    51      ScrText()
  838. ;
  839. ;------------------------------------------------------------------------------
  840. ;
  841. ; Analysis flags : Sds
  842. ;
  843. ; S - Shell to DOS ■ 5
  844. ;     This may be normal if the PPE need to execute an external command,
  845. ;     but may be actually anything... nasty (formating HD, rebooting,...)
  846. ;     or usefull (sorting, maintenance,...). Check!
  847. ;     ■ Search for : SHELL
  848. ;
  849. ; d - Access PCBOARD.DAT ■ 2
  850. ;     Program gets the full pathname to PCBOARD.DAT, this may be usefull
  851. ;     for many PPE so they can find various informations on the system
  852. ;     (system paths, max number of lines in messages, ...) but it may also
  853. ;     be a way to gather vital informations.
  854. ;     ■ Search for : PCBDAT()
  855. ;
  856. ; s - Sysop level access ■ 5
  857. ;     Program is reading the sysop access level, this may be normal
  858. ;     but still it is very suspect. It is the best way to give a user
  859. ;     all priviledges. Check!
  860. ;     ■ Search for : SYSOPSEC()
  861. ;
  862. ;------------------------------------------------------------------------------
  863. ;
  864. ; Postprocessing report
  865. ;
  866. ;    9       For/Next
  867. ;    3       While/EndWhile
  868. ;    58      If/Then or If/Then/Else
  869. ;    0       Select Case
  870. ;
  871. ;------------------------------------------------------------------------------
  872. ;                 AEGiS Corp - Break the routines, code against the machines!
  873. ;------------------------------------------------------------------------------
  874.