home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / PNC-ATL1.ZIP / ATLANTIS.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1997-02-10  |  15KB  |  902 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.1O (Encryption type I) - 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.     Boolean  BOOLEAN009
  28.     Boolean  TBOOLEAN010(100)
  29.     Boolean  TBOOLEAN011(100)
  30.     Boolean  BOOLEAN012
  31.     Boolean  BOOLEAN013
  32.     Integer  INTEGER001
  33.     Integer  INTEGER002
  34.     Integer  INTEGER003
  35.     Integer  INTEGER004
  36.     Integer  INTEGER005
  37.     Integer  INTEGER006
  38.     Integer  INTEGER007
  39.     Integer  INTEGER008
  40.     Integer  INTEGER009
  41.     Integer  INTEGER010
  42.     Integer  INTEGER011
  43.     Integer  INTEGER012
  44.     Integer  INTEGER013
  45.     Integer  INTEGER014
  46.     Integer  INTEGER015
  47.     Integer  INTEGER016
  48.     Integer  INTEGER017
  49.     Integer  INTEGER018
  50.     Integer  INTEGER019
  51.     Integer  INTEGER020
  52.     Integer  INTEGER021
  53.     Integer  INTEGER022
  54.     Integer  INTEGER023
  55.     Integer  INTEGER024
  56.     Integer  INTEGER025
  57.     Integer  INTEGER026
  58.     Integer  INTEGER027
  59.     Integer  INTEGER028
  60.     Integer  INTEGER030
  61.     String   STRING001
  62.     String   STRING002
  63.     String   STRING003
  64.     String   STRING004
  65.     String   STRING005
  66.     String   STRING006
  67.     String   STRING007
  68.     String   STRING008
  69.     String   STRING009
  70.     String   STRING010
  71.     String   STRING011
  72.     String   STRING012
  73.     String   STRING013
  74.     String   STRING014
  75.     String   STRING015
  76.     String   STRING016
  77.     String   TSTRING017(4)
  78.     String   TSTRING018(25)
  79.     String   STRING019
  80.     String   STRING020
  81.     String   STRING021
  82.     String   STRING022
  83.     String   STRING023
  84.     String   TSTRING024(100)
  85.     String   TSTRING025(100)
  86.     String   TSTRING026(100)
  87.     String   TSTRING027(100)
  88.     String   TSTRING028(100)
  89.     String   TSTRING029(200)
  90.     String   TSTRING030(100)
  91.     String   TSTRING031(100)
  92.     String   TSTRING032(100)
  93.     String   TSTRING033(100)
  94.     String   STRING034
  95.     String   STRING036
  96.     Declare  Function FUNCTION001(String STRING035, Boolean BOOLEAN014) String
  97.     Declare  Function FUNCTION002(Integer INTEGER029) Integer
  98.  
  99. ;------------------------------------------------------------------------------
  100.  
  101.     STRING001 = "-------------------------------------------------------------"
  102.     STRING001 = "■ Atlantis ■ Copyright (c) 1996-1997 Jolly Roger ■ Atlantis ■"
  103.     STRING001 = "-------------------------------------------------------------"
  104.     STRING001 = "I'd like to thank you for your interest in this masterpiece! "
  105.     STRING001 = "You may not modify this source code because that's illegal!  "
  106.     STRING001 = "Don't be lame - don't change my name!                        "
  107.     STRING001 = "                                             - Jolly Roger - "
  108.     STRING001 = "-------------------------------------------------------------"
  109.     GetUser
  110.     RdUNet PcbNode()
  111.     STRING012 = UN_Stat()
  112.     WrUNet PcbNode(), UN_Stat(), U_Name(), U_City, "Currently in menu.        Atlantis v1.0", ""
  113.     STRING003 = PcbNode()
  114.     INTEGER015 = 0
  115.     INTEGER028 = 0
  116.     If (AnsiOn() == 0) Then
  117.         Call PPEPath() + "ASCii\ASCii.PPE"
  118.         End
  119.     Endif
  120.     StartDisp 1
  121.     If (U_Expert == 1) Then
  122.         BOOLEAN001 = 1
  123.         BOOLEAN002 = 1
  124.     Endif
  125.     Gosub LABEL013
  126.     Gosub LABEL012
  127.     If (BOOLEAN001 == 1) Goto LABEL007
  128.     :LABEL001
  129.     Newline
  130.     PrintLn "@X01■ @X09ATLANTIS v1.0 @X01■@X09 Written By@X01:@X09 Jolly Roger / PiNNACLE '97@X01■@X07"
  131.     Gosub LABEL017
  132.     If (BOOLEAN013 == 1) Gosub LABEL020
  133.     INTEGER025 = FUNCTION002(Sec(Time()))
  134.     BOOLEAN009 = 1
  135.     If (INTEGER006 == 0) INTEGER006 = 1
  136.     :LABEL002
  137.     STRING009 = ""
  138.     StartDisp 1
  139.     DispFile STRING010 + STRING011 + ".PCB", 0
  140.     Gosub LABEL016
  141.     If (BOOLEAN004 == 1) Then
  142.         AnsiPos INTEGER016, INTEGER017
  143.         Print STRING013 + "@TIMELEFT@"
  144.     Endif
  145.     If (BOOLEAN005 == 1) Then
  146.         AnsiPos INTEGER018, INTEGER019
  147.         Print STRING015 + "@CONFNAME@"
  148.     Endif
  149.     AnsiPos INTEGER011, INTEGER012
  150.     Print STRING014 + Space(INTEGER004)
  151.     AnsiPos INTEGER011, INTEGER012
  152.     Print STRING014 + TSTRING026(INTEGER006)
  153.     AnsiPos TSTRING027(INTEGER006), TSTRING028(INTEGER006)
  154.     BOOLEAN003 = 1
  155.     :LABEL003
  156.     STRING002 = FUNCTION001("", 1)
  157.     Select Case (Upper(STRING002))
  158.         Case "UP"
  159.             Gosub LABEL024
  160.             If (TSTRING030(INTEGER006) <> 0) INTEGER006 = TSTRING030(INTEGER006)
  161.             Gosub LABEL025
  162.         Case "DOWN"
  163.             Gosub LABEL024
  164.             If (TSTRING031(INTEGER006) <> 0) INTEGER006 = TSTRING031(INTEGER006)
  165.             Gosub LABEL025
  166.         Case "LEFT"
  167.             Gosub LABEL024
  168.             If (TSTRING032(INTEGER006) <> 0) INTEGER006 = TSTRING032(INTEGER006)
  169.             Gosub LABEL025
  170.         Case "RIGHT"
  171.             Gosub LABEL024
  172.             If (TSTRING033(INTEGER006) <> 0) INTEGER006 = TSTRING033(INTEGER006)
  173.             Gosub LABEL025
  174.             If ((((Upper(STRING002) == "HOME") || (Upper(STRING002) == "END")) || (Upper(STRING002) == "INS")) || (Upper(STRING002) == "DEL")) Then
  175.                 Goto LABEL006
  176.             Endif
  177.         Case "PGUP"
  178.             If (INTEGER015 == 0) INTEGER015 = INTEGER028 + 1
  179.             If (INTEGER015 > 1) Then
  180.                 Dec INTEGER015
  181.                 AnsiPos INTEGER011, INTEGER012
  182.                 If (BOOLEAN003 == 0) Then
  183.                     Print STRING014 + Space(Len(STRING009))
  184.                     Goto LABEL004
  185.                 Endif
  186.                 Print STRING014 + Space(Len(TSTRING026(INTEGER006)))
  187.                 :LABEL004
  188.                 STRING009 = ""
  189.                 AnsiPos INTEGER011, INTEGER012
  190.                 KbdStuff TSTRING018(INTEGER015)
  191.             Endif
  192.         Case "PGDN"
  193.             If (INTEGER015 == 0) INTEGER015 = 1
  194.             If (INTEGER015 < INTEGER028) Then
  195.                 Inc INTEGER015
  196.                 AnsiPos INTEGER011, INTEGER012
  197.                 If (BOOLEAN003 == 0) Then
  198.                     Print STRING014 + Space(Len(STRING009))
  199.                     Goto LABEL005
  200.                 Endif
  201.                 Print STRING014 + Space(Len(TSTRING026(INTEGER006)))
  202.                 :LABEL005
  203.                 STRING009 = ""
  204.                 AnsiPos INTEGER011, INTEGER012
  205.                 KbdStuff TSTRING018(INTEGER015)
  206.             Endif
  207.         Case Chr(13)
  208.             If (BOOLEAN003 == 1) STRING009 = TSTRING026(INTEGER006)
  209.             If (Trim(STRING009, " ") == "") Then
  210.                 Backup Len(STRING009)
  211.                 STRING009 = ""
  212.             Else
  213.                 ResetDisp
  214.                 Color 7
  215.                 Cls
  216.                 Gosub LABEL014
  217.                 If (BOOLEAN003 == 1) Then
  218.                     If (TBOOLEAN011(INTEGER006) == 1) Then
  219.                         Newline
  220.                         Wait
  221.                     Endif
  222.                 Else
  223.                     Newline
  224.                 Endif
  225.                 STRING009 = ""
  226.                 If (U_Expert == 1) Then
  227.                     BOOLEAN002 = 1
  228.                     Goto LABEL007
  229.                 Endif
  230.                 Goto LABEL002
  231.             Endif
  232.         Case Chr(27)
  233.             AnsiPos INTEGER011, INTEGER012
  234.             If (BOOLEAN003 == 0) Then
  235.                 Print STRING014 + Space(Len(STRING009))
  236.             Else
  237.                 Print STRING014 + Space(Len(TSTRING026(INTEGER006)))
  238.             Endif
  239.             STRING009 = ""
  240.             AnsiPos INTEGER011, INTEGER012
  241.         Case Chr(8)
  242.             If (BOOLEAN003 == 1) Then
  243.                 BOOLEAN003 = 0
  244.                 STRING009 = TSTRING026(INTEGER006)
  245.                 If (Len(STRING009) > 0) Then
  246.                     STRING009 = Left(STRING009, Len(STRING009) - 1)
  247.                     AnsiPos INTEGER011 + Len(STRING009), INTEGER012
  248.                     Print STRING014 + " "
  249.                     AnsiPos INTEGER011 + Len(STRING009), INTEGER012
  250.                 Endif
  251.             ElseIf (Len((STRING009 > 0))) Then
  252.                 STRING009 = Left(STRING009, Len(STRING009) - 1)
  253.                 AnsiPos INTEGER011 + Len(STRING009), INTEGER012
  254.                 Print STRING014 + Space(1)
  255.                 AnsiPos INTEGER011 + Len(STRING009), INTEGER012
  256.             Endif
  257.         Case 1
  258.             STRING009 = TSTRING026(INTEGER006)
  259.             AnsiPos INTEGER011, INTEGER012
  260.             Print STRING014 + Space(Len(STRING009))
  261.             AnsiPos INTEGER011, INTEGER012
  262.             Print STRING014 + STRING002
  263.             STRING009 = STRING002
  264.             BOOLEAN003 = 0
  265.         Case INTEGER004
  266.             STRING009 = STRING009 + STRING002
  267.             Print STRING014 + STRING002
  268.         Case Else
  269.             Beep
  270.     End Select
  271.     :LABEL006
  272.     Goto LABEL003
  273.     End
  274.     :LABEL007
  275.     If (STRING008 <> "") Then
  276.         PrintLn STRING007
  277.         Print STRING008
  278.     Else
  279.         Print STRING007
  280.     Endif
  281.     :LABEL008
  282.     STRING006 = ""
  283.     INTEGER009 = GetY()
  284.     INTEGER010 = GetX()
  285.     AnsiPos INTEGER010, INTEGER009
  286.     :LABEL009
  287.     INTEGER025 = 0
  288.     STRING002 = FUNCTION001("abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!@#$%^&*()_+|1234567890-=\][{};':/.,<>? " + Chr(13) + Chr(8) + Chr(27) + Chr(34), 1)
  289.     If (STRING002 <> Chr(13)) Then
  290.         If (STRING002 == Chr(27)) Then
  291.             AnsiPos INTEGER010, INTEGER009
  292.             Print STRING014 + Space(Len(STRING006))
  293.             Goto LABEL008
  294.         Endif
  295.         If (STRING002 == Chr(8)) Then
  296.             If (Len((STRING006 > 0))) Then
  297.                 STRING006 = Left(STRING006, Len(STRING006) - 1)
  298.                 AnsiPos INTEGER010 + Len(STRING006), INTEGER009
  299.                 Print " "
  300.                 AnsiPos INTEGER010 + Len(STRING006), INTEGER009
  301.             Endif
  302.             Goto LABEL009
  303.         Endif
  304.         If (STRING002 == "LEFT") Then
  305.             If (Len((STRING006 > 0))) Then
  306.                 STRING006 = Left(STRING006, Len(STRING006) - 1)
  307.                 AnsiPos INTEGER010 + Len(STRING006), INTEGER009
  308.                 Print " "
  309.                 AnsiPos INTEGER010 + Len(STRING006), INTEGER009
  310.             Endif
  311.             Goto LABEL009
  312.         Endif
  313.         If (Len(STRING006) < INTEGER003) Then
  314.             If (STRING002 == "RIGHT") STRING002 = " "
  315.             If (STRING002 == "UP") STRING002 = ""
  316.             If (STRING002 == "DOWN") STRING002 = ""
  317.             If (STRING002 == "RIGHT") STRING002 = ""
  318.             STRING006 = STRING006 + STRING002
  319.             Print STRING014 + STRING002
  320.             Goto LABEL009
  321.             Goto LABEL010
  322.         Endif
  323.         Beep
  324.         Goto LABEL009
  325.     Endif
  326.     :LABEL010
  327.     STRING006 = Trim(STRING006, " ")
  328.     If (Len(STRING006) == 0) Then
  329.         Newlines 2
  330.         Goto LABEL007
  331.     Endif
  332.     STRING009 = STRING006
  333.     Gosub LABEL014
  334.     If (U_Expert == 0) Then
  335.         If (BOOLEAN001 == 1) Then
  336.             BOOLEAN001 = 0
  337.             Goto LABEL001
  338.             Goto LABEL011
  339.         Endif
  340.         BOOLEAN002 = 0
  341.         Goto LABEL002
  342.     Endif
  343.     :LABEL011
  344.     Goto LABEL007
  345.     :LABEL012
  346.     STRING004 = ReadLine(PPEPath() + "Atlantis.CFG", 1)
  347.     STRING004 = Mid(STRING004, 16, 5)
  348.     Tokenize STRING004
  349.     If (GetToken() == "NO") Then
  350.         INTEGER001 = GetToken()
  351.     Else
  352.         INTEGER001 = Random(GetToken())
  353.         If (INTEGER001 == 0) INTEGER001 = 1
  354.     Endif
  355.     STRING004 = ReadLine(PPEPath() + "Atlantis.CFG", 2)
  356.     INTEGER002 = Mid(STRING004, 15, 4)
  357.     STRING004 = ReadLine(PPEPath() + "Atlantis.CFG", 3)
  358.     STRING005 = Trim(Mid(STRING004, 15, 10), " ")
  359.     STRING004 = ReadLine(PPEPath() + "Atlantis.CFG", 4)
  360.     STRING007 = Mid(STRING004, 16, Len(STRING004) - 15)
  361.     STRING004 = ReadLine(PPEPath() + "Atlantis.CFG", 5)
  362.     STRING008 = Mid(STRING004, 16, Len(STRING004) - 15)
  363.     STRING004 = ReadLine(PPEPath() + "Atlantis.CFG", 6)
  364.     INTEGER003 = Mid(STRING004, 17, 2)
  365.     STRING004 = ReadLine(PPEPath() + "Atlantis.CFG", 7)
  366.     If (Upper(Mid(STRING004, 9, Len(STRING004) - 8)) == "YES") BOOLEAN013 = 1
  367.     STRING004 = ReadLine(PPEPath() + "Atlantis.CFG", 8)
  368.     INTEGER026 = Mid(STRING004, 14, 2)
  369.     STRING004 = ReadLine(PPEPath() + "Atlantis.CFG", 9)
  370.     STRING021 = "@X" + Mid(STRING004, 13, 2)
  371.     Return
  372.     :LABEL013
  373.     If (Exist(PPEPath() + "Atlantis.CFG") == 0) Then
  374.         PrintLn "@X08■ @X0CAtlantis v1.0 An error has occured @X08■"
  375.         Newline
  376.         PrintLn "@X08■ @X07The file : @X0F" + Upper(PPEPath()) + "Atlantis.CFG @X07is missing."
  377.         Newline
  378.         Wait
  379.         End
  380.     Endif
  381.     If (Exist(PPEPath() + "Sysop\Sysop.PPE") == 0) Then
  382.         PrintLn "@X08■ @X0CAtlantis v1.0 An error has occured @X08■"
  383.         Newline
  384.         PrintLn "@X08■ @X07The file : @X0F" + Upper(PPEPath()) + "SYSOP\Sysop.PPE @X07is missing."
  385.         Newline
  386.         Wait
  387.         End
  388.     Endif
  389.     Return
  390.     :LABEL014
  391.     INTEGER015 = 0
  392.     STRING009 = Trim(STRING009, " ")
  393.     Tokenize STRING009
  394.     Select Case (Upper(STRING009))
  395.         Case ""
  396.             Return
  397.         Case "?", "MENU"
  398.             If (INTEGER028 < 25) Then
  399.                 Inc INTEGER028
  400.                 TSTRING018(INTEGER028) = STRING009
  401.             Else
  402.                 For INTEGER001 = 2 To 25
  403.                     TSTRING018(INTEGER001 - 1) = TSTRING018(INTEGER001)
  404.                 Next
  405.                 TSTRING018(25) = STRING009
  406.             Endif
  407.             If (BOOLEAN002 == 1) Then
  408.                 If (BOOLEAN001 == 1) Then
  409.                     BOOLEAN001 = 0
  410.                     Goto LABEL001
  411.                     Goto LABEL015
  412.                 Endif
  413.                 Goto LABEL002
  414.             Endif
  415.             :LABEL015
  416.             If (STRING009 == "?") Then
  417.                 Newlines 2
  418.                 ResetDisp
  419.                 Command 1, STRING009
  420.                 StartDisp 1
  421.             Else
  422.                 BOOLEAN003 = 1
  423.             Endif
  424.         Case "SYSOP"
  425.             If (INTEGER028 < 25) Then
  426.                 Inc INTEGER028
  427.                 TSTRING018(INTEGER028) = STRING009
  428.             Else
  429.                 For INTEGER001 = 2 To 25
  430.                     TSTRING018(INTEGER001 - 1) = TSTRING018(INTEGER001)
  431.                 Next
  432.                 TSTRING018(25) = STRING009
  433.             Endif
  434.             If (U_Sec >= INTEGER002) Then
  435.                 Color 7
  436.                 Cls
  437.                 PrintLn "@X07┌───────────────────────────────────────────────────────────────────────────┐"
  438.                 PrintLn "@X07│  @X0FSysop Password @X08:@X0F                                                         @X07│"
  439.                 PrintLn "@X07└───────────────────────────────────────────────────────────────────────────┘"
  440.                 AnsiPos 21, 2
  441.                 STRING004 = ""
  442.                 InputStr "_", STRING004, "@X0F", 30, Mask_Pwd(), 0 + 1
  443.                 If (Upper(STRING004) <> Upper(STRING005)) Then
  444.                     Log "[ATLANTiS] - WARNING: Wrong Sysop Password : " + Upper(STRING004), 0
  445.                     Newlines 2
  446.                     Return
  447.                 Endif
  448.                 ResetDisp
  449.                 Call PPEPath() + "Sysop\Sysop.PPE"
  450.                 StartDisp 1
  451.                 BOOLEAN009 = 1
  452.             Else
  453.                 ResetDisp
  454.                 Command 1, "SYSOP"
  455.                 StartDisp 1
  456.                 BOOLEAN009 = 1
  457.             Endif
  458.         Case Else
  459.             If (INTEGER028 < 25) Then
  460.                 Inc INTEGER028
  461.                 TSTRING018(INTEGER028) = STRING009
  462.             Else
  463.                 For INTEGER001 = 2 To 25
  464.                     TSTRING018(INTEGER001 - 1) = TSTRING018(INTEGER001)
  465.                 Next
  466.                 TSTRING018(25) = STRING009
  467.             Endif
  468.             Newlines 2
  469.             ResetDisp
  470.             Command 1, STRING009
  471.             If (BOOLEAN003 == 1) Then
  472.                 If (TBOOLEAN010(INTEGER006) == 1) KbdFlush
  473.             Else
  474.                 STRING020 = ""
  475.                 STRING020 = Inkey()
  476.                 If (STRING020 <> "") Then
  477.                     STRING004 = Inkey()
  478.                     While (STRING004 <> "") Do
  479.                         STRING020 = STRING020 + STRING004
  480.                         STRING004 = Inkey()
  481.                     EndWhile
  482.                 Endif
  483.                 If (STRING020 == Chr(13)) STRING020 = ""
  484.                 If (STRING020 <> "") Then
  485.                     KbdFlush
  486.                     KbdStuff STRING020
  487.                     STRING020 = ""
  488.                     STRING004 = ""
  489.                 Else
  490.                     Wait
  491.                 Endif
  492.             Endif
  493.             StartDisp 1
  494.             BOOLEAN009 = 1
  495.     End Select
  496.     INTEGER015 = 0
  497.     GetUser
  498.     RdUNet PcbNode()
  499.     STRING012 = UN_Stat()
  500.     Return
  501.     :LABEL016
  502.     For INTEGER014 = 1 To INTEGER007
  503.         AnsiPos TSTRING027(INTEGER014), TSTRING028(INTEGER014)
  504.         If (INTEGER014 == INTEGER006) Then
  505.             Print TSTRING025(INTEGER014)
  506.             Continue
  507.         Endif
  508.         Print TSTRING024(INTEGER014)
  509.     Next
  510.     Return
  511.     :LABEL017
  512.     STRING010 = PPEPath() + "Config" + String(INTEGER001) + "\"
  513.     If (Exist(STRING010 + "Menu-" + String(U_Sec) + ".PCB") == 0) Then
  514.         STRING011 = "Menu-All"
  515.     Else
  516.         STRING011 = "Menu-" + String(U_Sec)
  517.     Endif
  518.     If (Exist(STRING010 + STRING011 + ".PCB") == 0) Then
  519.         PrintLn "@X08■ @X0CAtlantis v1.0 An error has occured @X08■"
  520.         Newline
  521.         PrintLn "@X08■ @X07The file : @X0F" + STRING010 + STRING011 + ".PCB @X07is missing."
  522.         Newline
  523.         Wait
  524.         End
  525.     Endif
  526.     If (Exist(STRING010 + STRING011 + ".CFG") == 0) Then
  527.         PrintLn "@X08■ @X0CAtlantis v1.0 An error has occured @X08■"
  528.         Newline
  529.         PrintLn "@X08■ @X07The file : @X0F" + STRING010 + STRING011 + ".CFG @X07is missing."
  530.         Newline
  531.         Wait
  532.         End
  533.     Endif
  534.     FOpen 1, STRING010 + STRING011 + ".CFG", 0, 2
  535.     :LABEL018
  536.     FGet 1, STRING004
  537.     If (Left(STRING004, 1) <> ";") Then
  538.         If (InStr(STRING004, "=") > 0) Then
  539.             If (Upper(STRING004) == "MENUCONFIG=") BOOLEAN006 = 1
  540.             If (Upper(STRING004) == "BEGINITEM=") BOOLEAN007 = 1
  541.             If (Upper(STRING004) == "NEXTITEM=") BOOLEAN007 = 1
  542.             If (Upper(STRING004) == "ENDITEM=") BOOLEAN008 = 1
  543.             If (BOOLEAN006 == 1) Then
  544.                 FGet 1, STRING004
  545.                 INTEGER011 = Mid(STRING004, 15, Len(STRING004) - 14)
  546.                 FGet 1, STRING004
  547.                 INTEGER012 = Mid(STRING004, 15, Len(STRING004) - 14)
  548.                 FGet 1, STRING004
  549.                 If (Upper(Mid(STRING004, 20, Len(STRING004) - 19)) == "YES") BOOLEAN005 = 1
  550.                 FGet 1, STRING004
  551.                 INTEGER018 = Mid(STRING004, 14, Len(STRING004) - 13)
  552.                 FGet 1, STRING004
  553.                 INTEGER019 = Mid(STRING004, 14, Len(STRING004) - 13)
  554.                 FGet 1, STRING004
  555.                 STRING015 = Mid(STRING004, 18, Len(STRING004) - 17)
  556.                 FGet 1, STRING004
  557.                 If (Upper(Mid(STRING004, 18, Len(STRING004) - 17)) == "YES") BOOLEAN004 = 1
  558.                 FGet 1, STRING004
  559.                 INTEGER016 = Mid(STRING004, 12, Len(STRING004) - 11)
  560.                 FGet 1, STRING004
  561.                 INTEGER017 = Mid(STRING004, 12, Len(STRING004) - 11)
  562.                 FGet 1, STRING004
  563.                 STRING013 = Mid(STRING004, 16, Len(STRING004) - 15)
  564.                 FGet 1, STRING004
  565.                 INTEGER006 = Mid(STRING004, 23, Len(STRING004) - 22)
  566.                 FGet 1, STRING004
  567.                 INTEGER004 = Mid(STRING004, 19, Len(STRING004) - 18)
  568.                 FGet 1, STRING004
  569.                 STRING014 = "@X" + Mid(STRING004, 19, 2)
  570.                 FGet 1, STRING004
  571.                 INTEGER021 = Mid(STRING004, 11, Len(STRING004) - 10)
  572.                 BOOLEAN006 = 0
  573.                 Goto LABEL019
  574.             Endif
  575.             If (BOOLEAN007 == 1) Then
  576.                 Inc INTEGER007
  577.                 FGet 1, STRING004
  578.                 INTEGER013 = Mid(STRING004, 17, Len(STRING004) - 16)
  579.                 FGet 1, STRING004
  580.                 TSTRING024(INTEGER013) = Mid(STRING004, 9, Len(STRING004) - 8)
  581.                 FGet 1, STRING004
  582.                 TSTRING025(INTEGER013) = Mid(STRING004, 14, Len(STRING004) - 13)
  583.                 FGet 1, STRING004
  584.                 TSTRING027(INTEGER013) = Mid(STRING004, 8, Len(STRING004) - 7)
  585.                 FGet 1, STRING004
  586.                 TSTRING028(INTEGER013) = Mid(STRING004, 8, Len(STRING004) - 7)
  587.                 FGet 1, STRING004
  588.                 TSTRING030(INTEGER013) = Mid(STRING004, 5, Len(STRING004) - 4)
  589.                 FGet 1, STRING004
  590.                 TSTRING031(INTEGER013) = Mid(STRING004, 7, Len(STRING004) - 6)
  591.                 FGet 1, STRING004
  592.                 TSTRING032(INTEGER013) = Mid(STRING004, 7, Len(STRING004) - 6)
  593.                 FGet 1, STRING004
  594.                 TSTRING033(INTEGER013) = Mid(STRING004, 8, Len(STRING004) - 7)
  595.                 FGet 1, STRING004
  596.                 TSTRING026(INTEGER013) = Mid(STRING004, 10, Len(STRING004) - 9)
  597.                 FGet 1, STRING004
  598.                 If (Upper(Mid(STRING004, 14, Len(STRING004) - 13)) == "YES") TBOOLEAN011(INTEGER013) = 1
  599.                 FGet 1, STRING004
  600.                 If (Upper(Mid(STRING004, 16, Len(STRING004) - 15)) == "YES") TBOOLEAN010(INTEGER013) = 1
  601.                 BOOLEAN007 = 0
  602.             Endif
  603.         Endif
  604.     Endif
  605.     :LABEL019
  606.     If (BOOLEAN008 == 0) Goto LABEL018
  607.     FClose 1
  608.     Return
  609.     :LABEL020
  610.     If (Exist(PPEPath() + "Rumour\Rumour.DAT") == 1) Then
  611.         FOpen 1, PPEPath() + "Rumour\Rumour.DAT", 2, 0
  612.         FGet 1, INTEGER008
  613.         For INTEGER014 = 1 To INTEGER008
  614.             FGet 1, STRING004
  615.             TSTRING029(INTEGER014) = STRING004
  616.             If (INTEGER014 == 200) Break
  617.             FGet 1, STRING004
  618.         Next
  619.         INTEGER014 = Random(INTEGER008)
  620.         STRING016 = TSTRING029(INTEGER014)
  621.         FClose 1
  622.     Else
  623.         TSTRING029(1) = "@X09■ Atlantis v1.0 ■ @X0FCan't Find Rumourbase @X09■@X07"
  624.         INTEGER008 = 1
  625.         STRING016 = TSTRING029(1)
  626.     Endif
  627.     For INTEGER014 = 1 To INTEGER008
  628.         If (InStr(TSTRING029(INTEGER014), "@CITY@") > 1) TSTRING029(INTEGER014) = ReplaceStr(TSTRING029(INTEGER014), "@CITY@", U_City)
  629.         If (InStr(TSTRING029(INTEGER014), "@USER@") > 1) TSTRING029(INTEGER014) = ReplaceStr(TSTRING029(INTEGER014), "@USER@", U_Name())
  630.     Next
  631.     Return
  632.     End
  633.  
  634. ;------------------------------------------------------------------------------
  635.  
  636.     Function FUNCTION001(String STRING035, Boolean BOOLEAN014) String
  637.  
  638.     Integer  INTEGER029
  639.  
  640.     BOOLEAN012 = 0
  641.     If (STRING035 <> "") BOOLEAN012 = 1
  642.     :LABEL021
  643.     STRING034 = ""
  644.     While (STRING034 == "") Do
  645.         STRING034 = Inkey()
  646.         INTEGER024 = Sec(Time())
  647.         RdUNet PcbNode()
  648.         If (UN_Stat() == "M") Then
  649.             STRING001 = "-------------------------------------------------------"
  650.             STRING001 = " Multinode-Broadcast-Messaging-System v1.0 (MBMS)      "
  651.             STRING001 = " Copyright (c) 1997 - Jolly Roger. All Rights Reserved "
  652.             STRING001 = "-------------------------------------------------------"
  653.             FOpen 0, ReadLine(PCBDat(), 41), 0, 0
  654.             INTEGER005 = (PcbNode() - 1) * 189 + 136
  655.             FSeek 0, INTEGER005, 0
  656.             FRead 0, STRING022, 64
  657.             STRING022 = Strip(STRING022, Chr(0))
  658.             If (STRING022 <> "") Then
  659.                 INTEGER022 = GetX()
  660.                 INTEGER023 = GetY()
  661.                 Beep
  662.                 TSTRING017(1) = ScrText(1, 1, 79, 1)
  663.                 TSTRING017(2) = ScrText(1, 2, 79, 1)
  664.                 TSTRING017(3) = ScrText(1, 3, 79, 1)
  665.                 TSTRING017(4) = ScrText(1, 4, 79, 1)
  666.                 AnsiPos 1, 1
  667.                 PrintLn "@X08┌[@X07'@X0FBROADCAST@X07'ed message received, Press @X0FENTER @X07to continue@X08]────────────────────┐"
  668.                 PrintLn "│                                                                             │"
  669.                 PrintLn "│ @X07Message:                                                                    @X08│"
  670.                 Print "└─────────────────────────────────────────────────────────────────────────────┘"
  671.                 AnsiPos 12, 3
  672.                 Color 9
  673.                 Print STRING014 + STRING022
  674.                 KbdFlush
  675.                 While (STRING023 <> Chr(13)) Do
  676.                     STRING023 = Inkey()
  677.                 EndWhile
  678.                 AnsiPos 1, 1
  679.                 Print TSTRING017(1)
  680.                 AnsiPos 1, 2
  681.                 Print TSTRING017(2)
  682.                 AnsiPos 1, 3
  683.                 Print TSTRING017(3)
  684.                 AnsiPos 1, 4
  685.                 Print TSTRING017(4)
  686.                 AnsiPos INTEGER022, INTEGER023
  687.             Endif
  688.             FClose 0
  689.             WrUNet PcbNode(), STRING012, U_Name(), U_City, "Currently in menu.        Atlantis v1.0", ""
  690.         Endif
  691.         If (INTEGER024 == INTEGER025) BOOLEAN009 = 1
  692.         If (U_Expert == 0) Then
  693.             If (BOOLEAN013 == 1) Then
  694.                 If (BOOLEAN009 == 1) Then
  695.                     INTEGER022 = GetX()
  696.                     INTEGER023 = GetY()
  697.                     STRING019 = STRING016
  698.                     If (INTEGER008 <> 1) Then
  699.                         While (STRING019 == STRING016) Do
  700.                             INTEGER014 = Random(INTEGER008)
  701.                             If (INTEGER014 == 0) INTEGER014 = 1
  702.                             STRING016 = TSTRING029(INTEGER014)
  703.                         EndWhile
  704.                         Goto LABEL022
  705.                     Endif
  706.                     STRING016 = TSTRING029(1)
  707.                     :LABEL022
  708.                     If (INTEGER020 <> 0) Then
  709.                         AnsiPos INTEGER020, INTEGER021
  710.                         Print Space(Len(STRING019))
  711.                     Endif
  712.                     INTEGER014 = Len(StripAtx(STRING016))
  713.                     INTEGER020 = ToInt(String(41 - INTEGER014 / 2))
  714.                     AnsiPos INTEGER020, INTEGER021
  715.                     Print STRING021 + STRING016
  716.                     INTEGER025 = FUNCTION002(INTEGER024)
  717.                     AnsiPos INTEGER022, INTEGER023
  718.                     BOOLEAN009 = 0
  719.                 Endif
  720.             Endif
  721.         Endif
  722.     EndWhile
  723.     If (STRING034 == "BADKEY") Goto LABEL021
  724.     If (BOOLEAN012 == 1) Then
  725.         If (InStr(STRING035, STRING034) == 0) Then
  726.             If (BOOLEAN014 == 1) Then
  727.                 If (STRING034 == "UP") Goto LABEL023
  728.                 If (STRING034 == "DOWN") Goto LABEL023
  729.                 If (STRING034 == "LEFT") Goto LABEL023
  730.                 If (STRING034 == "RIGHT") Goto LABEL023
  731.             Endif
  732.             Goto LABEL021
  733.         Endif
  734.     Endif
  735.     If (BOOLEAN014 == 0) Then
  736.         If (STRING034 == "UP") Goto LABEL021
  737.         If (STRING034 == "DOWN") Goto LABEL021
  738.         If (STRING034 == "LEFT") Goto LABEL021
  739.         If (STRING034 == "RIGHT") Goto LABEL021
  740.     Endif
  741.     :LABEL023
  742.     FUNCTION001 = STRING034
  743.  
  744.     EndFunc
  745.  
  746.  
  747. ;------------------------------------------------------------------------------
  748.  
  749.     Function FUNCTION002(Integer INTEGER029) Integer
  750.  
  751.     If (INTEGER029 + INTEGER026 > 60) Then
  752.         INTEGER027 = INTEGER026 - 60 - INTEGER029
  753.         FUNCTION002 = INTEGER027
  754.     Else
  755.         FUNCTION002 = INTEGER029 + INTEGER026
  756.     Endif
  757.     If (FUNCTION002 == 60) FUNCTION002 = 0
  758.  
  759.     EndFunc
  760.  
  761.     :LABEL024
  762.     AnsiPos TSTRING027(INTEGER006), TSTRING028(INTEGER006)
  763.     Print TSTRING024(INTEGER006)
  764.     AnsiPos INTEGER011, INTEGER012
  765.     If (BOOLEAN003 == 1) Then
  766.         Print STRING014 + Space(Len(TSTRING026(INTEGER006)))
  767.     Else
  768.         Print STRING014 + Space(Len(STRING009))
  769.     Endif
  770.     Return
  771.     :LABEL025
  772.     AnsiPos TSTRING027(INTEGER006), TSTRING028(INTEGER006)
  773.     Print TSTRING025(INTEGER006)
  774.     AnsiPos INTEGER011, INTEGER012
  775.     Print STRING014 + TSTRING026(INTEGER006)
  776.     AnsiPos TSTRING027(INTEGER006), TSTRING028(INTEGER006)
  777.     BOOLEAN003 = 1
  778.     Return
  779.     STRING001 = "-------------------------------------------------------------"
  780.     STRING001 = "■ Atlantis ■ Copyright (c) 1995-1996 Jolly Roger ■ Atlantis ■"
  781.     STRING001 = "-------------------------------------------------------------"
  782.  
  783. ;------------------------------------------------------------------------------
  784. ;
  785. ; Usage report (before postprocessing)
  786. ;
  787. ; ■ Statements used :
  788. ;
  789. ;    7       End
  790. ;    2       Cls
  791. ;    6       Wait
  792. ;    3       Color 
  793. ;    166     Goto 
  794. ;    199     Let 
  795. ;    36      Print 
  796. ;    16      PrintLn 
  797. ;    131     If 
  798. ;    1       DispFile 
  799. ;    3       FOpen 
  800. ;    3       FClose 
  801. ;    30      FGet 
  802. ;    5       ResetDisp
  803. ;    6       StartDisp 
  804. ;    2       GetUser
  805. ;    1       Log 
  806. ;    1       InputStr 
  807. ;    15      Gosub 
  808. ;    10      Return
  809. ;    5       Inc 
  810. ;    1       Dec 
  811. ;    11      Newline
  812. ;    4       Newlines 
  813. ;    2       Tokenize 
  814. ;    3       Beep
  815. ;    3       KbdStuff 
  816. ;    2       Call 
  817. ;    3       RdUNet 
  818. ;    2       WrUNet 
  819. ;    40      AnsiPos 
  820. ;    1       Backup 
  821. ;    1       FSeek 
  822. ;    1       FRead 
  823. ;    3       KbdFlush
  824. ;    2       EndFunc
  825. ;    3       Command 
  826. ;
  827. ;
  828. ; ■ Functions used :
  829. ;
  830. ;    1       *
  831. ;    1       /
  832. ;    91      +
  833. ;    39      -
  834. ;    97      ==
  835. ;    16      <>
  836. ;    12      <
  837. ;    6       <=
  838. ;    9       >
  839. ;    13      >=
  840. ;    88      !
  841. ;    12      &&
  842. ;    10      ||
  843. ;    60      Len(
  844. ;    31      Upper()
  845. ;    35      Mid()
  846. ;    5       Left()
  847. ;    13      Space()
  848. ;    13      Chr()
  849. ;    4       InStr()
  850. ;    4       Trim()
  851. ;    3       Random()
  852. ;    2       Time()
  853. ;    3       U_Name()
  854. ;    2       Sec()
  855. ;    1       StripAtx()
  856. ;    1       Strip()
  857. ;    5       Inkey()
  858. ;    4       String()
  859. ;    1       Mask_Pwd()
  860. ;    1       PCBDat()
  861. ;    18      PPEPath()
  862. ;    7       PcbNode()
  863. ;    10      ReadLine()
  864. ;    4       UN_Stat()
  865. ;    3       GetToken()
  866. ;    6       Exist()
  867. ;    1       AnsiOn()
  868. ;    3       GetX()
  869. ;    3       GetY()
  870. ;    4       ScrText()
  871. ;    2       ReplaceStr()
  872. ;    1       ToInt()
  873. ;
  874. ;------------------------------------------------------------------------------
  875. ;
  876. ; Analysis flags : Cd
  877. ;
  878. ; C - Call child PPE ■ 3
  879. ;     This is usually normal, but may be a tricky way to launch some
  880. ;     sysop-only commands.
  881. ;     ■ Search for : CALL
  882. ;
  883. ; d - Access PCBOARD.DAT ■ 2
  884. ;     Program gets the full pathname to PCBOARD.DAT, this may be usefull
  885. ;     for many PPE so they can find various informations on the system
  886. ;     (system paths, max number of lines in messages, ...) but it may also
  887. ;     be a way to gather vital informations.
  888. ;     ■ Search for : PCBDAT()
  889. ;
  890. ;------------------------------------------------------------------------------
  891. ;
  892. ; Postprocessing report
  893. ;
  894. ;    6       For/Next
  895. ;    4       While/EndWhile
  896. ;    64      If/Then or If/Then/Else
  897. ;    2       Select Case
  898. ;
  899. ;------------------------------------------------------------------------------
  900. ;                 AEGiS Corp - Break the routines, code against the machines!
  901. ;------------------------------------------------------------------------------
  902.