home *** CD-ROM | disk | FTP | other *** search
/ Carsten's PPE Collection / Carstens_PPE_Collection_2007.zip / T / TF!CHT20.ZIP / TF!CHAT.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1995-10-01  |  16KB  |  832 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.     Boolean  BOOLEAN001
  20.     Boolean  BOOLEAN002
  21.     Boolean  BOOLEAN003
  22.     Boolean  BOOLEAN004
  23.     Boolean  BOOLEAN005
  24.     Boolean  BOOLEAN006
  25.     Boolean  BOOLEAN007
  26.     Boolean  BOOLEAN008
  27.     Integer  INTEGER001
  28.     Integer  INTEGER002
  29.     Integer  INTEGER003
  30.     Integer  INTEGER004
  31.     Integer  INTEGER005
  32.     Integer  INTEGER006
  33.     Integer  INTEGER007
  34.     Integer  INTEGER008
  35.     Integer  INTEGER009
  36.     Integer  INTEGER010
  37.     Integer  INTEGER011
  38.     Integer  INTEGER012
  39.     Integer  INTEGER013
  40.     Integer  INTEGER014
  41.     Integer  INTEGER015
  42.     String   STRING001
  43.     String   STRING002
  44.     String   STRING003
  45.     String   STRING004
  46.     String   STRING005
  47.     String   STRING006
  48.     String   STRING007
  49.     String   STRING008
  50.     String   STRING009
  51.     String   STRING010
  52.     String   STRING011
  53.     String   STRING012
  54.     String   STRING013
  55.     String   STRING014
  56.     String   STRING015
  57.     String   STRING016
  58.     String   STRING017
  59.     String   STRING018
  60.  
  61. ;------------------------------------------------------------------------------
  62.  
  63.     STRING018 = Chr(13) + Chr(10)
  64.     Tokenize ""
  65.     BOOLEAN008 = 0
  66.     STRING014 = "■ "
  67.     STRING015 = "≡ "
  68.     STRING016 = "                                     "
  69.     STRING016 = "@X07 " + STRING016 + STRING016
  70.     STRING017 = "───────────────────────────────────────"
  71.     STRING017 = STRING017 + STRING017 + "─"
  72.     If (Exist(PPEPath() + "TF!CHAT.CFG")) Then
  73.         FOpen 1, PPEPath() + "TF!CHAT.CFG", 0, 0
  74.         FGet 1, STRING013
  75.         FGet 1, STRING007
  76.         BOOLEAN006 = 0
  77.         If (Mid(STRING007, 1, 1) == "1") BOOLEAN006 = 1
  78.         FGet 1, STRING007
  79.         BOOLEAN002 = 0
  80.         If (Mid(STRING007, 1, 1) == "1") BOOLEAN002 = 1
  81.         FGet 1, STRING007
  82.         INTEGER001 = 0
  83.         If (Mid(STRING007, 1, 1) == "1") INTEGER001 = 1
  84.         FGet 1, STRING007
  85.         BOOLEAN007 = 0
  86.         If (Mid(STRING007, 1, 1) == "1") BOOLEAN007 = 1
  87.         FGet 1, STRING005
  88.         FGet 1, STRING006
  89.         FGet 1, STRING010
  90.         FGet 1, STRING009
  91.         STRING009 = Mid(STRING009, 1, 1)
  92.         STRING011 = " " + STRING009
  93.         For INTEGER004 = 0 To 36
  94.             STRING011 = STRING011 + STRING009 + STRING009
  95.         Next
  96.         STRING011 = STRING011 + " "
  97.         FGet 1, STRING012
  98.         FGet 1, STRING002
  99.         FGet 1, STRING007
  100.         INTEGER003 = 1
  101.         If (Mid(STRING007, 1, 1) == "2") INTEGER003 = 2
  102.         If (Mid(STRING007, 1, 1) == "3") INTEGER003 = 3
  103.         If (Mid(STRING007, 1, 1) == "4") INTEGER003 = 4
  104.         If (Mid(STRING007, 1, 1) == "5") INTEGER003 = 5
  105.         FGet 1, STRING003
  106.         FGet 1, STRING004
  107.         FClose 1
  108.         Gosub LABEL039
  109.         If (!Exist(STRING003) && !(STRING003 == "")) Then
  110.             FOpen 1, STRING003, 2, 0
  111.             FPut 1, STRING018 + "LOG CREATED: " + String(Date()) + " / " + String(Time())
  112.             FPutLn 1, "." + STRING018
  113.             FClose 1
  114.         Endif
  115.         FAppend 1, STRING003, 2, 0
  116.         FPutLn 1, STRING017 + STRING018
  117.         FPutLn 1, "SYSOP CHAT ACTIVE; " + +String(Date()) + " / " + String(Time())
  118.         FPutLn 1, ""
  119.         FPutLn 1, "USER: " + U_Name() + " ON NODE #" + String(PcbNode()) + STRING018
  120.         If (((Upper(GrafMode()) == "N") || (Upper(GrafMode()) == "A")) && INTEGER001) Goto LABEL003
  121.         Gosub LABEL029
  122.         If (STRING002 == "") Goto LABEL001
  123.         For INTEGER004 = 1 To Len(STRING002)
  124.             STRING008 = Mid(STRING002, INTEGER004, 1)
  125.             If (STRING008 == "*") STRING008 = Chr(13)
  126.             Push INTEGER004
  127.             Gosub LABEL004
  128.             Pop INTEGER004
  129.         Next
  130.         :LABEL001
  131.         If (BOOLEAN001) Goto LABEL002
  132.         STRING008 = KInkey()
  133.         If (!(STRING008 == "")) Gosub LABEL004
  134.         STRING008 = MInkey()
  135.         If (!(STRING008 == "")) Gosub LABEL018
  136.         Goto LABEL001
  137.         :LABEL002
  138.         Goto LABEL041
  139.         :LABEL003
  140.         STRING008 = Chr(4)
  141.         Gosub LABEL004
  142.         Goto LABEL041
  143.         :LABEL004
  144.         If (Len(STRING008) > 1) Goto LABEL015
  145.         If (STRING008 > Chr(31)) Then
  146.             If (BOOLEAN005 == 1) Goto LABEL005
  147.             AnsiPos INTEGER005 + INTEGER007, INTEGER006 + INTEGER008
  148.             BOOLEAN005 = 1
  149.             If (BOOLEAN003) Then
  150.                 If (!BOOLEAN004) Print STRING005
  151.                 Goto LABEL005
  152.             Endif
  153.             If (BOOLEAN004) Print STRING006
  154.             :LABEL005
  155.             Print STRING008
  156.             If (BOOLEAN006) Print STRING012 + Chr(27) + "[D"
  157.             Inc INTEGER005
  158.             If (!(INTEGER005 > INTEGER002) && !(INTEGER005 > 73)) Goto LABEL006
  159.             If (INTEGER005 > INTEGER002) Then
  160.                 If (InStr(STRING001, ScrText(INTEGER005 + INTEGER007 - 1, INTEGER006 + INTEGER008, 1, 0)) > 0) Then
  161.                     Print " "
  162.                     Gosub LABEL017
  163.                     INTEGER005 = 0
  164.                     Inc INTEGER006
  165.                     If (INTEGER006 == 9) INTEGER006 = 0
  166.                     AnsiPos INTEGER005 + INTEGER007, INTEGER006 + INTEGER008
  167.                     Print STRING016
  168.                     If (INTEGER006 < 8) Then
  169.                         AnsiPos INTEGER005 + INTEGER007 - 1, INTEGER006 + INTEGER008 + 1
  170.                         Print STRING010 + STRING011
  171.                     Endif
  172.                     AnsiPos INTEGER005 + INTEGER007, INTEGER006 + INTEGER008
  173.                     BOOLEAN003 = 1
  174.                     Print STRING005
  175.                     If (BOOLEAN006) Print STRING012 + Chr(27) + "[D"
  176.                 Endif
  177.             Endif
  178.             If (INTEGER005 > 73) Then
  179.                 Print "-"
  180.                 Gosub LABEL017
  181.                 INTEGER005 = 0
  182.                 Inc INTEGER006
  183.                 If (INTEGER006 == 9) INTEGER006 = 0
  184.                 AnsiPos INTEGER005 + INTEGER007, INTEGER006 + INTEGER008
  185.                 Print STRING016
  186.                 If (INTEGER006 < 8) Then
  187.                     AnsiPos INTEGER005 + INTEGER007 - 1, INTEGER006 + INTEGER008 + 1
  188.                     Print STRING010 + STRING011
  189.                 Endif
  190.                 AnsiPos INTEGER005 + INTEGER007, INTEGER006 + INTEGER008
  191.                 BOOLEAN003 = 0
  192.                 Print STRING006
  193.                 If (BOOLEAN006) Print STRING012 + Chr(27) + "[D"
  194.             Endif
  195.             :LABEL006
  196.             If (!(InStr(STRING001, ScrText(INTEGER005 + INTEGER007 - 1, INTEGER006 + INTEGER008, 1, 0)) > 0) && BOOLEAN003) Then
  197.                 Print STRING006
  198.                 BOOLEAN003 = 0
  199.                 Goto LABEL007
  200.             Endif
  201.             If ((InStr(STRING001, ScrText(INTEGER005 + INTEGER007 - 1, INTEGER006 + INTEGER008, 1, 0)) > 0) && !BOOLEAN003) Then
  202.                 Print STRING005
  203.                 BOOLEAN003 = 1
  204.             Endif
  205.         Endif
  206.         :LABEL007
  207.         If (STRING008 > Chr(31)) Return
  208.         If (STRING008 == Chr(27)) Then
  209.             If (!BOOLEAN005) AnsiPos INTEGER005 + INTEGER007, INTEGER006 + INTEGER008
  210.             Print " "
  211.             Gosub LABEL017
  212.             AnsiPos INTEGER009 + INTEGER011, INTEGER010 + INTEGER012
  213.             Print " "
  214.             Gosub LABEL028
  215.             BOOLEAN001 = 1
  216.         Endif
  217.         If (STRING008 == Chr(3)) Then
  218.             If (!BOOLEAN005) AnsiPos INTEGER005 + INTEGER007, INTEGER006 + INTEGER008
  219.             Print " "
  220.             Gosub LABEL017
  221.             Gosub LABEL035
  222.         Endif
  223.         If (STRING008 == Chr(4)) Then
  224.             If (!BOOLEAN005) AnsiPos INTEGER005 + INTEGER007, INTEGER006 + INTEGER008
  225.             Print " "
  226.             Gosub LABEL017
  227.             AnsiPos INTEGER009 + INTEGER011, INTEGER010 + INTEGER012
  228.             Print " "
  229.             Gosub LABEL028
  230.             PrintLn "@CLS@@PON@"
  231.             DispText 175, 0
  232.             PrintLn "@SYSTIME@" + STRING018
  233.             If (BOOLEAN008 == 1) FPutLn 1, ""
  234.             FPutLn 1, "SYSOP CHAT ENDED: " + +String(Date()) + " / " + String(Time())
  235.             FPutLn 1, ""
  236.             BOOLEAN007 = 0
  237.             PageOff
  238.             FClose 1
  239.             End
  240.         Endif
  241.         If (STRING008 == Chr(5)) Then
  242.             If (Exist(STRING004) && !(STRING004 == "")) Then
  243.                 If (!BOOLEAN005) AnsiPos INTEGER005 + INTEGER007, INTEGER006 + INTEGER008
  244.                 Print " "
  245.                 Gosub LABEL017
  246.                 AnsiPos INTEGER009 + INTEGER011, INTEGER010 + INTEGER012
  247.                 Print " "
  248.                 Gosub LABEL028
  249.                 Call STRING004
  250.                 Gosub LABEL039
  251.                 Gosub LABEL029
  252.                 Goto LABEL008
  253.             Endif
  254.             Print "@BEEP@"
  255.         Endif
  256.         :LABEL008
  257.         If (STRING008 == Chr(18)) Then
  258.             If (!BOOLEAN005) AnsiPos INTEGER005 + INTEGER007, INTEGER006 + INTEGER008
  259.             Print " "
  260.             Gosub LABEL017
  261.             AnsiPos INTEGER009 + INTEGER011, INTEGER010 + INTEGER012
  262.             Print " "
  263.             Gosub LABEL028
  264.             Gosub LABEL040
  265.         Endif
  266.         If (STRING008 == Chr(8)) Then
  267.             If (BOOLEAN005) Goto LABEL009
  268.             AnsiPos INTEGER005 + INTEGER007, INTEGER006 + INTEGER008
  269.             BOOLEAN005 = 1
  270.             If (BOOLEAN003) Then
  271.                 If (!BOOLEAN004) Print STRING005
  272.                 Goto LABEL009
  273.             Endif
  274.             If (BOOLEAN004) Print STRING006
  275.             :LABEL009
  276.             If (InStr(STRING001, ScrText(INTEGER005 + INTEGER007 - 2, INTEGER006 + INTEGER008, 1, 0)) > 0) Then
  277.                 If (BOOLEAN003) Goto LABEL010
  278.                 Print STRING005
  279.                 BOOLEAN003 = 1
  280.                 :LABEL010
  281.                 Goto LABEL011
  282.             Endif
  283.             If (BOOLEAN003) Then
  284.                 Print STRING006
  285.                 BOOLEAN003 = 0
  286.             Endif
  287.             :LABEL011
  288.             If (INTEGER005 > 0) Then
  289.                 INTEGER005 = INTEGER005 - 1
  290.                 If (BOOLEAN006) Then
  291.                     Print Chr(8) + STRING012 + " " + Chr(27) + "[2D"
  292.                     Goto LABEL012
  293.                 Endif
  294.                 Print Chr(8) + " " + Chr(8)
  295.                 :LABEL012
  296.                 Goto LABEL013
  297.             Endif
  298.             Print STRING005
  299.             BOOLEAN003 = 1
  300.         Endif
  301.         :LABEL013
  302.         If ((STRING008 == Chr(13)) || (STRING008 == Chr(10))) Then
  303.             If (BOOLEAN005) Goto LABEL014
  304.             AnsiPos INTEGER005 + INTEGER007, INTEGER006 + INTEGER008
  305.             BOOLEAN005 = 1
  306.             If (BOOLEAN003) Then
  307.                 If (!BOOLEAN004) Print STRING005
  308.                 Goto LABEL014
  309.             Endif
  310.             If (BOOLEAN004) Print STRING006
  311.             :LABEL014
  312.             Print " "
  313.             Gosub LABEL017
  314.             INTEGER005 = 0
  315.             Inc INTEGER006
  316.             If (INTEGER006 == 9) INTEGER006 = 0
  317.             AnsiPos INTEGER005 + INTEGER007, INTEGER006 + INTEGER008
  318.             Print STRING016
  319.             If (INTEGER006 < 8) Then
  320.                 AnsiPos INTEGER005 + INTEGER007 - 1, INTEGER006 + INTEGER008 + 1
  321.                 Print STRING010 + STRING011
  322.             Endif
  323.             AnsiPos INTEGER005 + INTEGER007, INTEGER006 + INTEGER008
  324.             BOOLEAN003 = 1
  325.             Print STRING005
  326.             If (BOOLEAN006) Print STRING012 + Chr(27) + "[D"
  327.         Endif
  328.         Return
  329.         :LABEL015
  330.         If (STRING008 == "DOWN") Then
  331.             BOOLEAN007 = !BOOLEAN007
  332.             If (BOOLEAN007) Then
  333.                 PageOn
  334.                 Goto LABEL016
  335.             Endif
  336.             PageOff
  337.         Endif
  338.         :LABEL016
  339.         If ((STRING008 == "LEFT") || (STRING008 == "RIGHT")) Gosub LABEL029
  340.         Return
  341.         :LABEL017
  342.         INTEGER013 = GetX()
  343.         INTEGER014 = GetY()
  344.         If ((INTEGER005 > 0) && (BOOLEAN007 == 1)) Then
  345.             FPutLn 1, STRING014 + ScrText(3, INTEGER014, 78 - 80 - INTEGER013, 0)
  346.             BOOLEAN008 = 1
  347.         Endif
  348.         Return
  349.         :LABEL018
  350.         If (Len(STRING008) > 1) STRING008 = ""
  351.         If (STRING008 > Chr(31)) Then
  352.             If (BOOLEAN005 == 0) Goto LABEL019
  353.             AnsiPos INTEGER009 + INTEGER011, INTEGER010 + INTEGER012
  354.             BOOLEAN005 = 0
  355.             If (BOOLEAN004) Then
  356.                 If (!BOOLEAN003) Print STRING005
  357.                 Goto LABEL019
  358.             Endif
  359.             If (BOOLEAN003) Print STRING006
  360.             :LABEL019
  361.             Print STRING008
  362.             If (BOOLEAN006) Print STRING012 + Chr(27) + "[D"
  363.             Inc INTEGER009
  364.             If (!(INTEGER009 > INTEGER002) && !(INTEGER009 > 73)) Goto LABEL020
  365.             If (INTEGER009 > INTEGER002) Then
  366.                 If (InStr(STRING001, ScrText(INTEGER009 + INTEGER011 - 1, INTEGER010 + INTEGER012, 1, 0)) > 0) Then
  367.                     Print " "
  368.                     Gosub LABEL028
  369.                     INTEGER009 = 0
  370.                     Inc INTEGER010
  371.                     If (INTEGER010 == 9) INTEGER010 = 0
  372.                     AnsiPos INTEGER009 + INTEGER011, INTEGER010 + INTEGER012
  373.                     Print STRING016
  374.                     If (INTEGER010 < 8) Then
  375.                         AnsiPos INTEGER009 + INTEGER011 - 1, INTEGER010 + INTEGER012 + 1
  376.                         Print STRING010 + STRING011
  377.                     Endif
  378.                     AnsiPos INTEGER009 + INTEGER011, INTEGER010 + INTEGER012
  379.                     BOOLEAN004 = 1
  380.                     Print STRING005
  381.                     Print STRING012 + Chr(27) + "[D"
  382.                 Endif
  383.             Endif
  384.             If (INTEGER009 > 73) Then
  385.                 Print "-"
  386.                 Gosub LABEL028
  387.                 INTEGER009 = 0
  388.                 Inc INTEGER010
  389.                 If (INTEGER010 == 9) INTEGER010 = 0
  390.                 AnsiPos INTEGER009 + INTEGER011, INTEGER010 + INTEGER012
  391.                 Print STRING016
  392.                 If (INTEGER010 < 8) Then
  393.                     AnsiPos INTEGER009 + INTEGER011 - 1, INTEGER010 + INTEGER012 + 1
  394.                     Print STRING010 + STRING011
  395.                 Endif
  396.                 AnsiPos INTEGER009 + INTEGER011, INTEGER010 + INTEGER012
  397.                 BOOLEAN004 = 0
  398.                 Print STRING006
  399.                 Print STRING012 + Chr(27) + "[D"
  400.             Endif
  401.             :LABEL020
  402.             If (!(InStr(STRING001, ScrText(INTEGER009 + INTEGER011 - 1, INTEGER010 + INTEGER012, 1, 0)) > 0) && BOOLEAN004) Then
  403.                 Print STRING006
  404.                 BOOLEAN004 = 0
  405.                 Goto LABEL021
  406.             Endif
  407.             If ((InStr(STRING001, ScrText(INTEGER009 + INTEGER011 - 1, INTEGER010 + INTEGER012, 1, 0)) > 0) && !BOOLEAN004) Then
  408.                 Print STRING005
  409.                 BOOLEAN004 = 1
  410.             Endif
  411.         Endif
  412.         :LABEL021
  413.         If (STRING008 > Chr(31)) Return
  414.         If ((STRING008 == Chr(27)) && (BOOLEAN002 == 1)) Then
  415.             If (BOOLEAN005) AnsiPos INTEGER009 + INTEGER011, INTEGER010 + INTEGER012
  416.             Print " "
  417.             Gosub LABEL028
  418.             AnsiPos INTEGER005 + INTEGER007, INTEGER006 + INTEGER008
  419.             Print " "
  420.             Gosub LABEL017
  421.             BOOLEAN001 = 1
  422.             AnsiPos INTEGER009 + INTEGER011, INTEGER010 + INTEGER012
  423.         Endif
  424.         If (STRING008 == Chr(3)) Gosub LABEL036
  425.         If (STRING008 == Chr(8)) Then
  426.             If (BOOLEAN005) Then
  427.                 AnsiPos INTEGER009 + INTEGER011, INTEGER010 + INTEGER012
  428.                 BOOLEAN005 = 0
  429.                 If (BOOLEAN004) Then
  430.                     If (!BOOLEAN003) Print STRING005
  431.                     Goto LABEL022
  432.                 Endif
  433.                 If (BOOLEAN003) Print STRING006
  434.             Endif
  435.             :LABEL022
  436.             If (InStr(STRING001, ScrText(INTEGER009 + INTEGER011 - 2, INTEGER010 + INTEGER012, 1, 0)) > 0) Then
  437.                 If (BOOLEAN004) Goto LABEL023
  438.                 Print STRING005
  439.                 BOOLEAN004 = 1
  440.                 :LABEL023
  441.                 Goto LABEL024
  442.             Endif
  443.             If (BOOLEAN004) Then
  444.                 Print STRING006
  445.                 BOOLEAN004 = 0
  446.             Endif
  447.             :LABEL024
  448.             If (INTEGER009 > 0) Then
  449.                 INTEGER009 = INTEGER009 - 1
  450.                 If (BOOLEAN006) Then
  451.                     Print Chr(8) + STRING012 + " " + Chr(27) + "[2D"
  452.                     Goto LABEL025
  453.                 Endif
  454.                 Print Chr(8) + " " + Chr(8)
  455.                 :LABEL025
  456.                 Goto LABEL026
  457.             Endif
  458.             Print STRING005
  459.             BOOLEAN004 = 1
  460.         Endif
  461.         :LABEL026
  462.         If ((STRING008 == Chr(13)) || (STRING008 == Chr(10))) Then
  463.             If (BOOLEAN005) Then
  464.                 AnsiPos INTEGER009 + INTEGER011, INTEGER010 + INTEGER012
  465.                 BOOLEAN005 = 0
  466.                 If (BOOLEAN004) Then
  467.                     If (!BOOLEAN003) Print STRING005
  468.                     Goto LABEL027
  469.                 Endif
  470.                 If (BOOLEAN003) Print STRING006
  471.             Endif
  472.             :LABEL027
  473.             Print " "
  474.             Gosub LABEL028
  475.             INTEGER009 = 0
  476.             Inc INTEGER010
  477.             If (INTEGER010 == 9) INTEGER010 = 0
  478.             AnsiPos INTEGER009 + INTEGER011, INTEGER010 + INTEGER012
  479.             Print STRING016
  480.             If (INTEGER010 < 8) Then
  481.                 AnsiPos INTEGER009 + INTEGER011 - 1, INTEGER010 + INTEGER012 + 1
  482.                 Print STRING010 + STRING011
  483.             Endif
  484.             AnsiPos INTEGER009 + INTEGER011, INTEGER010 + INTEGER012
  485.             BOOLEAN004 = 1
  486.             Print STRING005
  487.             Print STRING012 + Chr(27) + "[D"
  488.         Endif
  489.         Return
  490.         :LABEL028
  491.         INTEGER013 = GetX()
  492.         INTEGER014 = GetY()
  493.         If ((INTEGER009 > 0) && (BOOLEAN007 == 1)) Then
  494.             FPutLn 1, STRING015 + ScrText(3, INTEGER014, 78 - 80 - INTEGER013, 0)
  495.             BOOLEAN008 = 1
  496.         Endif
  497.         Return
  498.     Endif
  499.     PrintLn "@BEEP@@X0D[@X0EError reading @X0FTF!CHAT.CFG@X0D]" + STRING018
  500.     Print "@WAIT@"
  501.     Goto LABEL041
  502.     :LABEL029
  503.     INTEGER015 = CurColor()
  504.     Print "H"
  505.     If (STRING008 == "LEFT") Dec INTEGER003
  506.     If (STRING008 == "RIGHT") Inc INTEGER003
  507.     If (INTEGER003 == 6) INTEGER003 = 1
  508.     If (INTEGER003 == 0) INTEGER003 = 5
  509.     If (INTEGER003 == 1) Gosub LABEL030
  510.     If (INTEGER003 == 2) Gosub LABEL031
  511.     If (INTEGER003 == 3) Gosub LABEL032
  512.     If (INTEGER003 == 4) Gosub LABEL033
  513.     If (INTEGER003 == 5) Gosub LABEL034
  514.     If ((INTEGER006 + INTEGER008 > 0) && (INTEGER006 + INTEGER008 < 9)) Then
  515.         AnsiPos 2, INTEGER006 + INTEGER008 + 1
  516.         Print STRING010 + STRING011
  517.     Endif
  518.     If ((INTEGER010 + INTEGER012 > 13) && (INTEGER010 + INTEGER012 < 22)) Then
  519.         AnsiPos 2, INTEGER010 + INTEGER012 + 1
  520.         Print STRING010 + STRING011
  521.     Endif
  522.     Gosub LABEL038
  523.     If (BOOLEAN006) Then
  524.         AnsiPos INTEGER009 + INTEGER011, INTEGER010 + INTEGER012
  525.         Print STRING005 + STRING012
  526.     Endif
  527.     AnsiPos INTEGER005 + INTEGER007, INTEGER006 + INTEGER008
  528.     BOOLEAN005 = 1
  529.     Color INTEGER015
  530.     If (BOOLEAN006) Print STRING012 + Chr(27) + "[D"
  531.     Return
  532.     :LABEL030
  533.     PrintLn "@X07@POFF@@X05┌─@X09─@X05─@X09──@X0D─@X09─@X0D──@X0F─@X0D─@X0F──@X0D─@X0F─@X0D──@X09─@X0D─@X09──@X05─@X09─@X05──@X08─@X05─@X08── ─ ∙ ·                                           "
  534.     PrintLn "│C "
  535.     PrintLn "|C "
  536.     PrintLn ":C·"
  537.     PrintLn "∙C∙"
  538.     PrintLn ":C:"
  539.     PrintLn "|C|"
  540.     PrintLn "│C│"
  541.     PrintLn "@X05│C│"
  542.     PrintLn "@X09│C│"
  543.     PrintLn "@X0D├@X09─@X05─@X08─∙·              · ∙ ─ ──@X05─@X08─@X05──@X09─@X05─@X09──@X0D─@X09─@X0D─┬@X09─@X05─@X08─∙·              · ∙ ─ ──@X05─@X08─@X05──@X09─@X05─@X09──@X0D─@X09─@X0D─┤"
  544.     PrintLn "│ @X07C @X0D│ @X07C @X0D│"
  545.     PrintLn "├─@X09─@X0D─@X09──@X05─@X09─@X05──@X08─@X05─@X08── ─ ∙ ·              ·∙─@X05─@X09─@X0D┴─@X09─@X0D─@X09──@X05─@X09─@X05──@X08─@X05─@X08── ─ ∙ ·@POS:74@·∙─@X05─@X09─@X0D┤"
  546.     PrintLn "@X09│C│"
  547.     PrintLn "@X05│C│"
  548.     PrintLn "@X08│C│"
  549.     PrintLn "|C|"
  550.     PrintLn ":C:"
  551.     PrintLn "∙C∙"
  552.     PrintLn "·C:"
  553.     PrintLn " C|"
  554.     PrintLn " C│"
  555.     Print "                                      · ∙ ─ ──@X05─@X08─@X05──@X09─@X05─@X09──@X0D─@X09─@X0D──@X0F─@X0D─@X0F──@X0D─@X0F─@X0D──@X09─@X0D─@X09─@X0D──@X09─@X0D─@X09──@X05─@X09─@X05─┘"
  556.     Return
  557.     :LABEL031
  558.     PrintLn "@X07@POFF@@X0E┌──@X02─@X0E─@X02──@X08─@X02─@X08── ─ ∙ ·                                             · ∙ ─ ──@X02─@X08─@X02──@X0E─@X02─@X0E──┐"
  559.     PrintLn "@X02│C│"
  560.     PrintLn "@X08│C│"
  561.     PrintLn "|C|"
  562.     PrintLn ":C:"
  563.     PrintLn "∙C∙"
  564.     PrintLn "·C·"
  565.     PrintLn " C "
  566.     PrintLn " C "
  567.     PrintLn " C "
  568.     PrintLn "@X0E┌@X02─@X0E─@X02──@X08─@X02─@X08── ─ ∙ ·          · ∙ ─ ──@X02─@X08─@X02──@X0E─@X02─@X0E┬@X02─@X0E─@X02──@X08─@X02─@X08── ─ ∙ ·          · ∙ ─ ──@X02─@X08─@X02──@X0E─@X02─@X0E┐"
  569.     PrintLn "│ @X07C @X0E│ @X07C @X0E│"
  570.     PrintLn "└@X02─@X0E─@X02──@X08─@X02─@X08── ─ ∙ ·          · ∙ ─ ──@X02─@X08─@X02──@X0E─@X02─@X0E┴@X02─@X0E─@X02──@X08─@X02─@X08── ─ ∙ ·          · ∙ ─ ──@X02─@X08─@X02──@X0E─@X02─@X0E┘"
  571.     PrintLn " C "
  572.     PrintLn " C "
  573.     PrintLn " C "
  574.     PrintLn "@X08·C·"
  575.     PrintLn "∙C∙"
  576.     PrintLn ":C:"
  577.     PrintLn "|C|"
  578.     PrintLn "│C│"
  579.     PrintLn "@X02│C│"
  580.     Print "@X0E└──@X02─@X0E─@X02──@X08─@X02─@X08── ─ ∙ ·                                             · ∙ ─ ──@X02─@X08─@X02──@X0E─@X02─@X0E──┘"
  581.     Return
  582.     :LABEL032
  583.     PrintLn "@X0E┌──@X0C─@X0E──@X0C──@X0E─@X0C───@X04─@X0C──@X04──@X0C─@X04─── ── ─ ∙ ·                                                 "
  584.     PrintLn "@X0C│C "
  585.     PrintLn "@X04│C "
  586.     PrintLn "|C "
  587.     PrintLn ":C·"
  588.     PrintLn "∙C∙"
  589.     PrintLn "·C:"
  590.     PrintLn " C|"
  591.     PrintLn " C│"
  592.     PrintLn " C@X0C│"
  593.     PrintLn "@X0E┌──@X0C─@X0E──@X0C──@X0E─@X0C───@X04─@X0C──@X04──@X0C─@X04─── ── ─ ∙ ·      ·∙─@X0C┬─@X04─@X0C─@X04── ─ ∙ ·           · ∙ ─ ──@X0C─@X04─@X0C──@X0E─@X0C─@X0E──┤"
  594.     PrintLn "│ @X07C @X0C│ @X07C @X0E│"
  595.     PrintLn "@X0E├──@X0C─@X0E─@X0C──@X04─@X0C─@X04── ─ ∙ ·           · ∙ ─ ──@X0C─@X04─@X0C─┴@X04─∙·      · ∙ ─ ── ───@X0C─@X04──@X0C──@X04─@X0C───@X0E─@X0C──@X0E──@X0C─@X0E──┘"
  596.     PrintLn "@X0C│C "
  597.     PrintLn "@X04│C "
  598.     PrintLn "|C "
  599.     PrintLn ":C·"
  600.     PrintLn "∙C∙"
  601.     PrintLn "·C:"
  602.     PrintLn " C|"
  603.     PrintLn " C│"
  604.     PrintLn " C@X0C│"
  605.     Print "                                                 @X04· ∙ ─ ── ───@X0C─@X04──@X0C──@X04─@X0C───@X0E─@X0C──@X0E──@X0C─@X0E──┘"
  606.     Return
  607.     :LABEL033
  608.     PrintLn "@X09╔══@X01═@X09══@X01══@X09═@X01═══─══──═─── ── ─ ∙ ·                   · ∙ ─ ── ───═──══─═══@X09═@X01══@X09══@X01═@X09══╗"
  609.     PrintLn "║C║"
  610.     PrintLn "@X01║C║"
  611.     PrintLn "│C│"
  612.     PrintLn "|C|"
  613.     PrintLn ":C:"
  614.     PrintLn "∙C∙"
  615.     PrintLn "·C·"
  616.     PrintLn " C "
  617.     PrintLn " C "
  618.     PrintLn "          · ∙ ─ ── ───═──══─═══@X09═@X01══@X09══@X01═@X09══╦══@X01═@X09══@X01══@X09═@X01═══─══──═─── ── ─ ∙ ·          "
  619.     PrintLn "  @X07C @X09║ @X07C@X01  "
  620.     PrintLn "          · ∙ ─ ── ───═──══─═══@X09═@X01══@X09══@X01═@X09══╩══@X01═@X09══@X01══@X09═@X01═══─══──═─── ── ─ ∙ ·          "
  621.     PrintLn " C "
  622.     PrintLn " C "
  623.     PrintLn "·C·"
  624.     PrintLn "∙C∙"
  625.     PrintLn ":C:"
  626.     PrintLn "|C|"
  627.     PrintLn "│C│"
  628.     PrintLn "║C║"
  629.     PrintLn "@X09║C║"
  630.     Print "╚══@X01═@X09══@X01══@X09═@X01═══─══──═─── ── ─ ∙ ·                   · ∙ ─ ── ───═──══─═══@X09═@X01══@X09══@X01═@X09══╝"
  631.     Return
  632.     :LABEL034
  633.     PrintLn "@X05                                         · ∙ ─ ── ───═─══─═══@X0D═@X05══@X0D══@X05═@X0D═══@X0E═@X0D══@X0E══@X0D═@X0E══╗"
  634.     PrintLn " C@X0D║"
  635.     PrintLn " C@X05║"
  636.     PrintLn "·C│"
  637.     PrintLn "∙C|"
  638.     PrintLn ":C:"
  639.     PrintLn "|C∙"
  640.     PrintLn "│C "
  641.     PrintLn "║C "
  642.     PrintLn "@X0D║C "
  643.     PrintLn "@X0E╠══@X0D═@X0E══@X0D══@X0E═@X0D═══@X05═@X0D══@X05══@X0D═@X05═══─══─═─── ── ─ ∙ ·                                         "
  644.     PrintLn "@X0E║ @X07C   C  "
  645.     PrintLn "@X0E╠══@X0D═@X0E══@X0D══@X0E═@X0D═══@X05═@X0D══@X05══@X0D═@X05═══─══─═─── ── ─ ∙ ·                                         "
  646.     PrintLn "@X0D║C "
  647.     PrintLn "@X05║C "
  648.     PrintLn "@X05│C·"
  649.     PrintLn "@X05|C∙"
  650.     PrintLn "@X05:C:"
  651.     PrintLn "@X05∙C|"
  652.     PrintLn "@X05·C│"
  653.     PrintLn "@X05 C║"
  654.     PrintLn "@X05 C@X0D║"
  655.     Print "@X0D                                         @X05· ∙ ─ ── ───═─══─═══@X0D═@X05══@X0D══@X05═@X0D═══@X0E═@X0D══@X0E══@X0D═@X0E══╝@X07"
  656.     Return
  657.     :LABEL035
  658.     BOOLEAN005 = 1
  659.     BOOLEAN003 = 1
  660.     INTEGER005 = 0
  661.     INTEGER006 = 0
  662.     For INTEGER004 = 2 To 10
  663.         AnsiPos 2, INTEGER004
  664.         If (INTEGER004 == 3) Then
  665.             Print STRING010 + STRING011
  666.             Continue
  667.         Endif
  668.         Print " " + STRING016
  669.     Next
  670.     AnsiPos 3, 2
  671.     Print STRING005 + STRING012 + Chr(27) + "[D"
  672.     Return
  673.     :LABEL036
  674.     BOOLEAN005 = 0
  675.     BOOLEAN004 = 1
  676.     INTEGER009 = 0
  677.     INTEGER010 = 0
  678.     For INTEGER004 = 14 To 22
  679.         AnsiPos 2, INTEGER004
  680.         If (INTEGER004 == 15) Then
  681.             Print STRING010 + STRING011
  682.             Continue
  683.         Endif
  684.         Print " " + STRING016
  685.     Next
  686.     AnsiPos 3, 14
  687.     Print STRING005 + STRING012 + Chr(27) + "[D"
  688.     Return
  689.     :LABEL037
  690.     INTEGER005 = 0
  691.     INTEGER006 = 0
  692.     INTEGER009 = 0
  693.     INTEGER010 = 0
  694.     INTEGER007 = 3
  695.     INTEGER008 = 2
  696.     INTEGER011 = 3
  697.     INTEGER012 = 14
  698.     BOOLEAN003 = 1
  699.     BOOLEAN004 = 1
  700.     BOOLEAN005 = 1
  701.     Return
  702.     :LABEL038
  703.     AnsiPos 21 - Len(STRING013) / 2, 12
  704.     Print "@X0F" + STRING013
  705.     AnsiPos 60 - Len(U_Name()) / 2, 12
  706.     Print "@X0F" + U_Name()
  707.     Return
  708.     :LABEL039
  709.     Print "@X07@CLS@@POFF@"
  710.     If (BOOLEAN007 == 1) Then
  711.         PageOn
  712.     Else
  713.         PageOff
  714.     Endif
  715.     BOOLEAN005 = 1
  716.     BOOLEAN001 = 0
  717.     INTEGER002 = 60
  718.     STRING001 = "+-/\_=," + Chr(32) + Chr(255)
  719.     Gosub LABEL037
  720.     Print STRING005
  721.     GetUser
  722.     Return
  723.     :LABEL040
  724.     Print "@X07@CLS@@POFF@"
  725.     BOOLEAN005 = 1
  726.     BOOLEAN001 = 0
  727.     INTEGER002 = 60
  728.     STRING001 = "+-/\_=," + Chr(32) + Chr(255)
  729.     Print STRING005
  730.     Gosub LABEL037
  731.     Gosub LABEL029
  732.     Return
  733.     :LABEL041
  734.     If (BOOLEAN008 == 1) FPutLn 1, ""
  735.     FPutLn 1, "SYSOP CHAT ENDED: " + +String(Date()) + " / " + String(Time())
  736.     FPutLn 1, ""
  737.     FClose 1
  738.     PageOff
  739.     Print "@CLS@@PON@"
  740.     KbdStuff Chr(27)
  741.  
  742. ;------------------------------------------------------------------------------
  743. ;
  744. ; Usage report (before postprocessing)
  745. ;
  746. ; ■ Statements used :
  747. ;
  748. ;    1       End
  749. ;    1       Color 
  750. ;    100     Goto 
  751. ;    116     Let 
  752. ;    96      Print 
  753. ;    113     PrintLn 
  754. ;    130     If 
  755. ;    2       FOpen 
  756. ;    1       FAppend 
  757. ;    4       FClose 
  758. ;    14      FGet 
  759. ;    1       FPut 
  760. ;    13      FPutLn 
  761. ;    1       GetUser
  762. ;    38      Gosub 
  763. ;    19      Return
  764. ;    9       Inc 
  765. ;    1       Dec 
  766. ;    1       Tokenize 
  767. ;    1       DispText 
  768. ;    1       Push 
  769. ;    1       Pop 
  770. ;    1       KbdStuff 
  771. ;    1       Call 
  772. ;    46      AnsiPos 
  773. ;    2       PageOn
  774. ;    4       PageOff
  775. ;
  776. ;
  777. ; ■ Functions used :
  778. ;
  779. ;    3       +
  780. ;    2       /
  781. ;    199     +
  782. ;    22      -
  783. ;    57      ==
  784. ;    12      <
  785. ;    4       <=
  786. ;    28      >
  787. ;    8       >=
  788. ;    92      !
  789. ;    22      &&
  790. ;    8       ||
  791. ;    6       Len(
  792. ;    2       Upper()
  793. ;    10      Mid()
  794. ;    45      Chr()
  795. ;    8       InStr()
  796. ;    4       Date()
  797. ;    4       Time()
  798. ;    3       U_Name()
  799. ;    9       String()
  800. ;    2       PPEPath()
  801. ;    1       PcbNode()
  802. ;    3       Exist()
  803. ;    2       GetX()
  804. ;    2       GetY()
  805. ;    2       GrafMode()
  806. ;    1       CurColor()
  807. ;    1       KInkey()
  808. ;    1       MInkey()
  809. ;    10      ScrText()
  810. ;
  811. ;------------------------------------------------------------------------------
  812. ;
  813. ; Analysis flags : C
  814. ;
  815. ; C - Call child PPE ■ 3
  816. ;     This is usually normal, but may be a tricky way to launch some
  817. ;     sysop-only commands.
  818. ;     ■ Search for : CALL
  819. ;
  820. ;------------------------------------------------------------------------------
  821. ;
  822. ; Postprocessing report
  823. ;
  824. ;    4       For/Next
  825. ;    0       While/EndWhile
  826. ;    57      If/Then or If/Then/Else
  827. ;    0       Select Case
  828. ;
  829. ;------------------------------------------------------------------------------
  830. ;                 AEGiS Corp - Break the routines, code against the machines!
  831. ;------------------------------------------------------------------------------
  832.