home *** CD-ROM | disk | FTP | other *** search
/ ftp.wwiv.com / ftp.wwiv.com.zip / ftp.wwiv.com / pub / BBS / BMS100.ZIP / BMS001.DAT / BMS.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1994-11-04  |  15KB  |  871 lines

  1. ;------------------------------------------------------------------------------
  2. ;                                                   .ss.
  3. ;                                                   `²²'
  4. ;             .,sS$Ss,,s$  .,sS$$$Ss.  .,sS$Ss,,s$ .ss.  .sSs.
  5. ;           .d$$²^°²$$$$'.d$P²°^^²$P'.d$$²^°²$$$$'.$$$' .$$$²Sb,.
  6. ;           $$$'   .$$$' $$$²Sçsµ²' .$$$'   .$$$'.$$$' .$$$'  `$$b.
  7. ;           $$$b,,d$$$' ,$$$b,....,s$$$$b,,d$$$'.$$$;.,$$$'    ;$$$
  8. ;           `²S$$S²²S$$S²°²S$$$$S²°°²S$$$$$$',$$S²°²S$S'.sS$$$P²'
  9. ;                                    .sS²°$$$²²°"'       d²°'
  10. ;                                  .$$²  .$$'
  11. ;                                  $$$.,d$$'
  12. ;                                  `²S$$S²'
  13. ;------------------------------------------------------------------------------
  14. ; P.P.L.X. 2.OO                          (C)1996 - Lone Runner / AEGiS CoRP'96 
  15. ;------------------------------------------------------------------------------
  16. ; PPE 3.O1 (Encryption type I) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Boolean  BOOLEAN001
  20.     Boolean  BOOLEAN002
  21.     Boolean  BOOLEAN003
  22.     Boolean  BOOLEAN004
  23.     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.     Integer  INTEGER016
  43.     Integer  INTEGER017
  44.     Integer  INTEGER018
  45.     String   STRING001
  46.     String   STRING002
  47.     String   STRING003
  48.     String   STRING004
  49.     String   STRING005
  50.     String   STRING006
  51.     String   STRING007
  52.     String   STRING008
  53.     String   STRING009
  54.     String   STRING010
  55.     String   STRING011
  56.     String   STRING012
  57.     String   STRING013
  58.     String   STRING014
  59.     String   STRING015
  60.     String   STRING016
  61.     String   STRING017
  62.     String   STRING018
  63.     String   STRING019
  64.     String   TSTRING020(11)
  65.     String   STRING021
  66.     String   STRING022
  67.     String   STRING023
  68.     String   STRING024
  69.     String   STRING025
  70.     String   STRING026
  71.     String   STRING027
  72.     String   STRING028
  73.     String   STRING029
  74.     String   STRING030
  75.     String   STRING031
  76.     String   STRING032
  77.     String   STRING033
  78.     String   STRING034
  79.     String   STRING035
  80.     String   STRING036
  81.     String   STRING037
  82.     String   STRING038
  83.     String   STRING039
  84.     String   STRING040
  85.     String   STRING041
  86.     String   STRING042
  87.     String   STRING043
  88.     String   STRING044
  89.     String   STRING045
  90.     String   STRING046
  91.     String   STRING052
  92.     Declare  Function FUNCTION001(String STRING051) String
  93.     Declare  Procedure PROC001(Integer INTEGER019, Var String STRING047, Var String STRING048, Var String STRING049, Var String STRING050)
  94.  
  95. ;------------------------------------------------------------------------------
  96.  
  97.     STRING017 = "v1.00"
  98.     STRING018 = PPEName()
  99.     STRING041 = "LST"
  100.     INTEGER009 = 0
  101.     If (GrafMode() == "R") Then
  102.         Newline
  103.         PrintLn "!|1K|*|w0000270N12|10$SBARON$|#|#|#"
  104.         Color 31
  105.         Color 7
  106.     Endif
  107.     If (Exist(PPEPath() + PPEName() + ".CFG") == 0) Then
  108.         Color 9
  109.         Print " * "
  110.         Color 3
  111.         PrintLn "Can not find BMS.CFG config file, run BMSETUP.EXE program to create it."
  112.     Else
  113.         FOpen 1, PPEPath() + PPEName() + ".CFG", 2, 0
  114.         FGet 1, STRING001
  115.         If (Len(RTrim(STRING001, Chr(32))) == 0) STRING001 = "Unknown Bulletin Board System"
  116.         FGet 1, STRING002
  117.         If (Len(RTrim(STRING002, Chr(32))) == 0) STRING002 = " "
  118.         FGet 1, BOOLEAN001
  119.         If (Len(RTrim(BOOLEAN001, Chr(32))) == 0) BOOLEAN001 = 0
  120.         FGet 1, BOOLEAN002
  121.         If (Len(RTrim(BOOLEAN002, Chr(32))) == 0) BOOLEAN002 = 1
  122.         FGet 1, INTEGER002
  123.         If (Len(RTrim(INTEGER002, Chr(32))) == 0) INTEGER002 = 12
  124.         FGet 1, STRING003
  125.         If (Len(RTrim(STRING003, Chr(32))) == 0) STRING003 = PPEPath()
  126.         FGet 1, STRING004
  127.         If (Len(RTrim(STRING004, Chr(32))) == 0) STRING004 = PPEPath()
  128.         FGet 1, STRING005
  129.         If (Len(RTrim(STRING005, Chr(32))) == 0) STRING005 = PPEPath()
  130.         FGet 1, STRING006
  131.         If (Len(RTrim(STRING006, Chr(32))) == 0) STRING006 = PPEPath()
  132.         FGet 1, INTEGER003
  133.         If (Len(RTrim(INTEGER003, Chr(32))) == 0) INTEGER003 = 2400
  134.         FGet 1, BOOLEAN003
  135.         If (Len(RTrim(BOOLEAN003, Chr(32))) == 0) BOOLEAN003 = 1
  136.         FGet 1, BOOLEAN004
  137.         If (Len(RTrim(BOOLEAN004, Chr(32))) == 0) BOOLEAN004 = 0
  138.         FGet 1, STRING007
  139.         If (Len(RTrim(STRING007, Chr(32))) == 0) STRING007 = "BLT.BMS"
  140.         FGet 1, STRING008
  141.         If (Len(RTrim(STRING008, Chr(32))) == 0) STRING008 = "Sysop"
  142.         FClose 1
  143.         If (Exist(PPEPath() + "BMS.CLR") == 0) Then
  144.             STRING009 = "03"
  145.             STRING010 = "08"
  146.             STRING011 = "1F"
  147.         Else
  148.             FOpen 1, PPEPath() + "BMS.CLR", 2, 0
  149.             FRead 1, STRING009, 2
  150.             FSeek 1, 4, 1
  151.             FRead 1, STRING010, 2
  152.             FRead 1, STRING011, 2
  153.             FClose 1
  154.         Endif
  155.         STRING009 = "@X" + STRING009
  156.         STRING010 = "@X" + STRING010
  157.         STRING011 = "@X" + STRING011
  158.         If (CurConf() <> 0) STRING041 = I2S(CurConf(), 16)
  159.         While (Len(STRING041) < 3) Do
  160.             STRING041 = "0" + STRING041
  161.         EndWhile
  162.         STRING001 = RTrim(STRING001, Chr(32))
  163.         STRING008 = RTrim(STRING008, Chr(32))
  164.         STRING018 = STRING003 + STRING018 + "." + STRING041
  165.         If (INTEGER003 == 0) INTEGER003 = 115200
  166.         STRING029 = Upper(STRING001)
  167.         STRING030 = Upper(STRING008)
  168.         STRING023 = MegaNum(Len(STRING029) + Asc(Left(Upper(STRING029), 1)))
  169.         STRING024 = MegaNum(Len(STRING029) - Len(Strip(Strip(Strip(Strip(Strip(Strip(Upper(STRING029), "A"), "E"), "I"), "O"), "U"), "Y")) + (Left(Len(STRING029), 1) + 1) * 100)
  170.         STRING031 = MegaNum(Len(STRING029) - Len(Strip(STRING029, Chr(32))) + Asc(Right(Upper(STRING029), 1)) + 200)
  171.         STRING025 = I2S(Len(STRING030) + Asc(Left(Upper(STRING030), 1)), 20)
  172.         STRING027 = MegaNum(Len(STRING030) - Len(Strip(Strip(Strip(Strip(Strip(Strip(Upper(STRING030), "A"), "E"), "I"), "O"), "U"), "Y")) + (Left(Len(STRING030), 1) + 1) * 100)
  173.         STRING026 = MegaNum(Len(STRING030) - Len(Strip(STRING030, Chr(32))) + Asc(Right(Upper(STRING030), 1)) + 200)
  174.         If (InStr(STRING030, "M")) STRING028 = "3"
  175.         If (InStr(STRING030, "Z")) STRING028 = STRING028 + "L"
  176.         If (InStr(STRING030, "I")) STRING028 = STRING028 + "2"
  177.         If (InStr(STRING030, "X")) STRING028 = STRING028 + "5"
  178.         STRING033 = Replace(STRING023 + STRING024 + STRING031 + STRING025 + STRING027 + STRING026 + STRING028, "O", "0")
  179.         If (BOOLEAN001) Log "--- Bulletin Menu System " + STRING017 + " (Opened) at (" + String(Time()) + ") ---", 1
  180.         If (BOOLEAN002) Then
  181.             RdUNet PcbNode()
  182.             WrUNet PcbNode(), "D", UN_Name(), UN_City(), UN_Name() + " - Bulletin System " + STRING017, ""
  183.         Endif
  184.         If ((STRING002 <> STRING033) || (BOOLEAN003 == 1)) Then
  185.             Cls
  186.             Color 5
  187.             PrintLn "Bulletin Menu System " + STRING017 + " - (c) Copyright 1994 ArcticSoft (Mario Mueller)"
  188.             Color 9
  189.             PrintLn "Antarctica Bulletin Board (717) 755-2440 USRobotics Courier 28,800 with HST"
  190.             Newline
  191.             If (STRING002 == STRING033) Then
  192.                 STRING032 = STRING001
  193.                 Goto LABEL001
  194.             Endif
  195.             STRING032 = "Unregistered Evaluation Copy"
  196.             :LABEL001
  197.             Color 3
  198.             Print "Registered to: "
  199.             Color 11
  200.             PrintLn STRING032
  201.             Newline
  202.             Color 3
  203.             MPrint "Please wait ... "
  204.             Delay 10
  205.             If (STRING002 <> STRING033) Then
  206.                 SPrint Chr(27) + "[0;1;34m * " + Chr(27) + "[0;36mPlease register BMS to remove this ten second Pause ... "
  207.                 If (BOOLEAN001) Log "- Please register/Only $15.00", 0
  208.                 Delay 100
  209.                 SPrintLn 
  210.             Endif
  211.         Endif
  212.         STRING022 = ""
  213.         If (Exist(STRING004 + "BMSTEXT" + LangExt())) STRING022 = LangExt()
  214.         If (Exist(STRING004 + "BMSTEXT" + STRING022) == 0) Then
  215.             Newlines 3
  216.             Color 9
  217.             Print " * "
  218.             Color 3
  219.             PrintLn "Can not find the BMSTEXT.XXX text file, run BMSETUP.EXE program to create it."
  220.             If (BOOLEAN001) Log "- Can not find BMSTEXT.XXX file", 0
  221.         Else
  222.             BOOLEAN006 = 0
  223.             If (((Carrier() >= INTEGER003) && (GrafMode() <> "N")) && (GrafMode() <> "A")) BOOLEAN006 = 1
  224.             Color 9
  225.             SPrint " * "
  226.             Color 3
  227.             SPrint "Loading BMSTEXT" + STRING022 + " into Memory ..."
  228.             FOpen 1, STRING004 + "BMSTEXT" + STRING022, 2, 0
  229.             For INTEGER004 = 1 To 11
  230.                 FGet 1, TSTRING020(INTEGER004)
  231.             Next
  232.             FClose 1
  233.             SPrintLn 
  234.             If (BOOLEAN006 == 0) Then
  235.                 Color 9
  236.                 SPrint " * "
  237.                 Color 3
  238.                 SPrintLn "Graphics Emulation/Baud Rate has disabled Lightbar"
  239.             Endif
  240.             If (STRING041 <> "LST") Then
  241.                 Color 9
  242.                 SPrint " * "
  243.                 Color 3
  244.                 SPrint "Switching to Detected (" + String(CurConf()) + ") Conference Number"
  245.                 Delay 10
  246.                 SPrintLn 
  247.             Endif
  248.             If (Exist(STRING018) == 0) Then
  249.                 Newlines 2
  250.                 PrintLn TSTRING020(1)
  251.             Else
  252.                 INTEGER015 = 0
  253.                 INTEGER016 = 0
  254.                 Goto LABEL006
  255.                 :LABEL002
  256.                 FClose 1
  257.                 Color 7
  258.                 INTEGER018 = STRING038
  259.                 PROC001(INTEGER018, STRING045, STRING043, STRING044, STRING034)
  260.                 If ((CurSec() < STRING044) && BOOLEAN001) Then
  261.                     Log "- Security violation Bulletin/Menu (.." + Right(STRING043, 12) + ")", 0
  262.                 ElseIf ((Exist(STRING043) == 0) && BOOLEAN001) Then
  263.                     Log "- Bulletin/Menu (.." + Right(STRING043, 12) + ") does not exist", 0
  264.                 ElseIf (((STRING034 == Chr(42)) && Exist(STRING043)) && (CurSec() >= STRING044)) Then
  265.                     Log "- User Attempted to Download a Menu", 0
  266.                 Else
  267.                     Cls
  268.                     Color 31
  269.                     ClrEol
  270.                     Print " Downloading Bulletin (" + FUNCTION001(STRING043) + ") on ", Date(), " at ", Time()
  271.                     Color 3
  272.                     Newline
  273.                     Print " * Importing Selected Bulletin to Download Area"
  274.                     Copy STRING043, STRING006 + FUNCTION001(STRING043)
  275.                     Newline
  276.                     Print " * Reading/Removing PCBoard Color Codes from Bulletin"
  277.                     Delete STRING006 + "DOWNLOAD.$$$"
  278.                     FOpen 1, STRING006 + FUNCTION001(STRING043), 2, 0
  279.                     FOpen 2, STRING006 + "DOWNLOAD.$$$", 2, 0
  280.                     While (Ferr(1) == 0) Do
  281.                         FGet 1, STRING046
  282.                         FPutLn 2, StripAtx(STRING046)
  283.                     EndWhile
  284.                     FClose 2
  285.                     FClose 1
  286.                     Delete STRING006 + FUNCTION001(STRING043)
  287.                     Delete STRING006 + STRING007 + "." + String(INTEGER009)
  288.                     Rename STRING006 + "DOWNLOAD.$$$", STRING006 + STRING007 + "." + String(INTEGER009)
  289.                     Newline
  290.                     PrintLn " * Preparing to Send Selected Bulletin with Default Protocol"
  291.                     Newline
  292.                     Delete "FLIST." + String(PcbNode())
  293.                     Download STRING006 + STRING007 + "." + String(INTEGER009)
  294.                     Delete STRING006 + STRING007 + "." + String(INTEGER009)
  295.                     Inc INTEGER009
  296.                     Goto LABEL006
  297.                     :LABEL003
  298.                     If (Exist(STRING005 + PPEName() + ".FTR")) DispFile STRING005 + PPEName() + ".FTR", 1
  299.                     INTEGER010 = GetX()
  300.                     INTEGER011 = GetY()
  301.                     BOOLEAN005 = 0
  302.                     If (BOOLEAN006) AnsiPos 1, INTEGER007
  303.                     STRING038 = ""
  304.                     STRING037 = ""
  305.                     STRING021 = ""
  306.                     While (BOOLEAN005 == 0) Do
  307.                         If (BOOLEAN006) Then
  308.                             Gosub LABEL005
  309.                         Else
  310.                             Newline
  311.                             If (BOOLEAN008) Print TSTRING020(11) + Chr(32)
  312.                             Print "@CLREOL@" + TSTRING020(10)
  313.                             BOOLEAN007 = 0
  314.                             While (BOOLEAN007 == 0) Do
  315.                                 STRING037 = Upper(Inkey())
  316.                                 If (((STRING037 >= "0") && (STRING037 <= "9")) && (Len(STRING021) < 2)) Then
  317.                                     STRING038 = ""
  318.                                     Print STRING037
  319.                                     STRING021 = STRING021 + STRING037
  320.                                     Continue
  321.                                 Endif
  322.                                 If ((STRING037 == Chr(8)) && (STRING021 <> "")) Then
  323.                                     STRING038 = ""
  324.                                     STRING021 = Left(STRING021, Len(STRING021) - 1)
  325.                                     BOOLEAN007 = 0
  326.                                     STRING037 = Chr(8) + Chr(32) + Chr(8)
  327.                                     Print STRING037
  328.                                     Continue
  329.                                 Endif
  330.                                 If (STRING037 == Chr(32)) Then
  331.                                     STRING038 = ""
  332.                                     STRING037 = ""
  333.                                     BOOLEAN007 = 1
  334.                                     BOOLEAN005 = 1
  335.                                     If ((GrafMode() == "A") || (GrafMode() == "N")) Then
  336.                                         Newline
  337.                                         Cls
  338.                                         If (Exist(STRING005 + PPEName() + ".HDR")) DispFile STRING005 + PPEName() + ".HDR", 1
  339.                                         Print TSTRING020(8)
  340.                                     Endif
  341.                                     Continue
  342.                                 Endif
  343.                                 If (STRING037 == Chr(13)) Then
  344.                                     STRING038 = STRING021
  345.                                     STRING037 = ""
  346.                                     BOOLEAN007 = 1
  347.                                     FClose 1
  348.                                     If (Len(STRING038) > 0) Goto LABEL009
  349.                                     If (Exist(STRING003 + PPEName() + ".A" + String(PcbNode()))) Then
  350.                                         If (FileInf(STRING003 + PPEName() + ".A" + String(PcbNode()), 4) == 0) Then
  351.                                             Delete STRING003 + PPEName() + ".A" + String(PcbNode())
  352.                                             Newline
  353.                                             StartDisp 2
  354.                                             Goto LABEL011
  355.                                         Endif
  356.                                         INTEGER014 = 0
  357.                                         FOpen 2, STRING003 + PPEName() + ".A" + String(PcbNode()), 2, 0
  358.                                         While (Ferr(2) == 0) Do
  359.                                             FGet 2, STRING039
  360.                                             If (Len(STRING039) <> 0) Inc INTEGER014
  361.                                         EndWhile
  362.                                         FClose 2
  363.                                         FOpen 2, STRING003 + PPEName() + ".A" + String(PcbNode()), 2, 0
  364.                                         For INTEGER012 = 1 To INTEGER014
  365.                                             FGet 2, STRING018
  366.                                         Next
  367.                                         FClose 2
  368.                                         FOpen 2, STRING003 + PPEName() + ".A" + String(PcbNode()), 2, 0
  369.                                         FOpen 3, STRING003 + PPEName() + ".B" + String(PcbNode()), 2, 0
  370.                                         For INTEGER012 = 1 To INTEGER014 - 1
  371.                                             FGet 2, STRING039
  372.                                             FPutLn 3, STRING039
  373.                                         Next
  374.                                         FClose 3
  375.                                         FClose 2
  376.                                         Delete STRING003 + PPEName() + ".A" + String(PcbNode())
  377.                                         Rename STRING003 + PPEName() + ".B" + String(PcbNode()), STRING003 + PPEName() + ".A" + String(PcbNode())
  378.                                         If ((GrafMode() <> "A") && (GrafMode() <> "N")) Then
  379.                                             Goto LABEL007
  380.                                             Goto LABEL004
  381.                                         Endif
  382.                                         Goto LABEL006
  383.                                         :LABEL004
  384.                                         Continue
  385.                                     Endif
  386.                                     Newline
  387.                                     StartDisp 2
  388.                                     Goto LABEL011
  389.                                 Endif
  390.                             EndWhile
  391.                         Endif
  392.                         If (BOOLEAN008) Then
  393.                             If ((GrafMode() <> "A") && (GrafMode() <> "N")) Then
  394.                                 AnsiPos 1, INTEGER007
  395.                                 Color 7
  396.                                 For INTEGER008 = 1 To INTEGER002
  397.                                     PrintLn "@CLREOL@"
  398.                                 Next
  399.                                 AnsiPos 1, INTEGER007
  400.                             Endif
  401.                         Endif
  402.                         If (Len(STRING038) > 0) Goto LABEL009
  403.                     EndWhile
  404.                     Return
  405.                     End
  406.  
  407. ;------------------------------------------------------------------------------
  408.  
  409.                     Procedure PROC001(Integer INTEGER019, Var String STRING047, Var String STRING048, Var String STRING049, Var String STRING050)
  410.  
  411.                     FOpen 1, STRING018, 2, 0
  412.                     For INTEGER017 = 1 To INTEGER019 + 2
  413.                         FGet 1, STRING042
  414.                     Next
  415.                     FClose 1
  416.                     STRING047 = Left(STRING042, 110)
  417.                     STRING048 = RTrim(Right(Left(STRING042, 110), 30), Chr(32))
  418.                     STRING049 = RTrim(Right(Left(STRING042, 113), 3), Chr(32))
  419.                     STRING050 = Right(STRING042, 1)
  420.  
  421.                     EndProc
  422.  
  423.  
  424. ;------------------------------------------------------------------------------
  425.  
  426.                     Function FUNCTION001(String STRING051) String
  427.  
  428.                     Integer  INTEGER020
  429.                     String   STRING053
  430.  
  431.                     INTEGER020 = Len(STRING051)
  432.                     While (INTEGER020 <> 0) Do
  433.                         STRING053 = Right(Left(STRING051, INTEGER020), 1)
  434.                         If (STRING053 == "\") Then
  435.                             FUNCTION001 = Right(STRING051, Len(STRING051) - INTEGER020)
  436.                             Break
  437.                         Endif
  438.                         Dec INTEGER020
  439.                     EndWhile
  440.  
  441.                     EndFunc
  442.  
  443.                     :LABEL005
  444.                     TSTRING020(0) = ReplaceStr(TSTRING020(2), "@NUM@", "..")
  445.                     If (Len(STRING037) == 0) Then
  446.                         If ((INTEGER015 <> 0) && (INTEGER016 <> 0)) Then
  447.                             AnsiPos INTEGER015, INTEGER016
  448.                         Endif
  449.                         AnsiPos GetX() - Len(StripAtx(STRING035)), GetY()
  450.                         STRING035 = ScrText(GetX(), GetY(), STRING019 + Len(StripAtx(TSTRING020(0))) - 2, 1)
  451.                         If (RTrim(StripAtx(STRING035), Chr(32)) == "") Then
  452.                             FClose 1
  453.                             Goto LABEL007
  454.                         Endif
  455.                         Print STRING011 + StripAtx(STRING035)
  456.                         Color 7
  457.                         AnsiPos 2, INTEGER007 - 1
  458.                         Print TSTRING020(7) + ReplaceStr(TSTRING020(5), "@MNUNAME@", RTrim(STRING016, Chr(32)))
  459.                         Print TSTRING020(7)
  460.                         AnsiPos 2, INTEGER007 + INTEGER002
  461.                         Print TSTRING020(7) + TSTRING020(4) + TSTRING020(7)
  462.                         If (BOOLEAN008) Then
  463.                             STRING040 = TSTRING020(11)
  464.                             AnsiPos 78 - Len(StripAtx(STRING040)), INTEGER007 + INTEGER002
  465.                             Print TSTRING020(7) + STRING040 + TSTRING020(7)
  466.                         Endif
  467.                         AnsiPos Len(StripAtx(STRING035)) + 1, INTEGER007
  468.                         If ((INTEGER015 <> 0) && (INTEGER016 <> 0)) Then
  469.                             AnsiPos INTEGER015, INTEGER016
  470.                             INTEGER015 = 0
  471.                             INTEGER016 = 0
  472.                         Endif
  473.                     Endif
  474.                     STRING038 = ""
  475.                     STRING037 = ""
  476.                     BOOLEAN007 = 0
  477.                     While (BOOLEAN007 == 0) Do
  478.                         STRING037 = Upper(Inkey())
  479.                         If (STRING037 == "DOWN") Then
  480.                             If (GetY() + 1 <> INTEGER007 + INTEGER002) Then
  481.                                 STRING036 = RTrim(ScrText(GetX() - Len(StripAtx(STRING035)), GetY() + 1, STRING019 + Len(StripAtx(TSTRING020(0))) + 1, 0), Chr(32))
  482.                                 If (Len(STRING036) <> 0) Then
  483.                                     AnsiPos GetX() - Len(StripAtx(STRING035)), GetY()
  484.                                     Print STRING035
  485.                                     AnsiPos GetX() - Len(StripAtx(STRING035)), GetY() + 1
  486.                                     STRING035 = ScrText(GetX(), GetY(), STRING019 + Len(StripAtx(TSTRING020(0))) - 2, 1)
  487.                                     Print STRING011 + StripAtx(STRING035)
  488.                                 Endif
  489.                             Endif
  490.                             Continue
  491.                         Endif
  492.                         If (STRING037 == "RIGHT") Then
  493.                             If (GetX() + STRING019 < 80) Then
  494.                                 STRING036 = RTrim(ScrText(GetX() + 2, GetY(), STRING019 + Len(StripAtx(TSTRING020(0))) + 1, 0), Chr(32))
  495.                                 If (Len(STRING036) <> 0) Then
  496.                                     AnsiPos GetX() - Len(StripAtx(STRING035)), GetY()
  497.                                     Print STRING035
  498.                                     AnsiPos GetX() + 1, GetY()
  499.                                     STRING035 = ScrText(GetX(), GetY(), STRING019 + Len(StripAtx(TSTRING020(0))) - 2, 1)
  500.                                     Print STRING011 + StripAtx(STRING035)
  501.                                 Endif
  502.                             Endif
  503.                             Continue
  504.                         Endif
  505.                         If (STRING037 == "LEFT") Then
  506.                             If (GetX() - Len(StripAtx(STRING035)) * 2 > 1) Then
  507.                                 AnsiPos GetX() - Len(StripAtx(STRING035)), GetY()
  508.                                 Print STRING035
  509.                                 AnsiPos GetX() - Len(StripAtx(STRING035)) * 2 - 1, GetY()
  510.                                 STRING035 = ScrText(GetX(), GetY(), STRING019 + Len(StripAtx(TSTRING020(0))) - 2, 1)
  511.                                 Print STRING011 + StripAtx(STRING035)
  512.                             Endif
  513.                             Continue
  514.                         Endif
  515.                         If ((STRING037 == "PGUP") || (STRING037 == "UP")) Then
  516.                             If (GetY() - 1 <> INTEGER007 - 1) Then
  517.                                 AnsiPos GetX() - Len(StripAtx(STRING035)), GetY()
  518.                                 Print STRING035
  519.                                 AnsiPos GetX() - Len(StripAtx(STRING035)), GetY() - 1
  520.                                 STRING035 = ScrText(GetX(), GetY(), STRING019 + Len(StripAtx(TSTRING020(0))) - 2, 1)
  521.                                 Print STRING011 + StripAtx(STRING035)
  522.                             Endif
  523.                             Continue
  524.                         Endif
  525.                         If (STRING037 == Chr(4)) Then
  526.                             STRING038 = Right(Left(StripAtx(STRING035), InStr(StripAtx(TSTRING020(2)), "@NUM@") + 1), 2)
  527.                             If ((Left(STRING038, 1) < "0") || (Left(STRING038, 1) > "9")) STRING038 = Right(STRING038, 1)
  528.                             INTEGER015 = GetX()
  529.                             INTEGER016 = GetY()
  530.                             STRING037 = ""
  531.                             BOOLEAN007 = 1
  532.                             BOOLEAN005 = 1
  533.                             Goto LABEL002
  534.                             Continue
  535.                         Endif
  536.                         If (STRING037 == Chr(13)) Then
  537.                             STRING038 = Right(Left(StripAtx(STRING035), InStr(StripAtx(TSTRING020(2)), "@NUM@") + 1), 2)
  538.                             If ((Left(STRING038, 1) < "0") || (Left(STRING038, 1) > "9")) STRING038 = Right(STRING038, 1)
  539.                             INTEGER015 = GetX()
  540.                             INTEGER016 = GetY()
  541.                             STRING037 = ""
  542.                             BOOLEAN007 = 1
  543.                             BOOLEAN005 = 1
  544.                             Continue
  545.                         Endif
  546.                         If (STRING037 == Chr(32)) Then
  547.                             STRING038 = ""
  548.                             STRING037 = ""
  549.                             BOOLEAN007 = 1
  550.                             BOOLEAN005 = 1
  551.                             Continue
  552.                         Endif
  553.                         If (STRING037 == Chr(27)) Then
  554.                             AnsiPos GetX() - Len(StripAtx(STRING035)), GetY()
  555.                             Print STRING035
  556.                             AnsiPos INTEGER010, INTEGER011
  557.                             If (Exist(STRING003 + PPEName() + ".A" + String(PcbNode()))) Then
  558.                                 If (FileInf(STRING003 + PPEName() + ".A" + String(PcbNode()), 4) == 0) Then
  559.                                     Delete STRING003 + PPEName() + ".A" + String(PcbNode())
  560.                                     Newline
  561.                                     StartDisp 2
  562.                                     Goto LABEL011
  563.                                 Endif
  564.                                 INTEGER014 = 0
  565.                                 FOpen 2, STRING003 + PPEName() + ".A" + String(PcbNode()), 2, 0
  566.                                 While (Ferr(2) == 0) Do
  567.                                     FGet 2, STRING039
  568.                                     If (Len(STRING039) <> 0) Inc INTEGER014
  569.                                 EndWhile
  570.                                 FClose 2
  571.                                 FOpen 2, STRING003 + PPEName() + ".A" + String(PcbNode()), 2, 0
  572.                                 For INTEGER012 = 1 To INTEGER014
  573.                                     FGet 2, STRING018
  574.                                 Next
  575.                                 FClose 2
  576.                                 FOpen 2, STRING003 + PPEName() + ".A" + String(PcbNode()), 2, 0
  577.                                 FOpen 3, STRING003 + PPEName() + ".B" + String(PcbNode()), 2, 0
  578.                                 For INTEGER012 = 1 To INTEGER014 - 1
  579.                                     FGet 2, STRING039
  580.                                     FPutLn 3, STRING039
  581.                                 Next
  582.                                 FClose 3
  583.                                 FClose 2
  584.                                 Delete STRING003 + PPEName() + ".A" + String(PcbNode())
  585.                                 Rename STRING003 + PPEName() + ".B" + String(PcbNode()), STRING003 + PPEName() + ".A" + String(PcbNode())
  586.                                 AnsiPos 1, INTEGER007
  587.                                 Color 7
  588.                                 For INTEGER008 = 1 To INTEGER002
  589.                                     PrintLn "@CLREOL@"
  590.                                 Next
  591.                                 AnsiPos 1, INTEGER007
  592.                                 Goto LABEL007
  593.                                 Continue
  594.                             Endif
  595.                             Newline
  596.                             StartDisp 2
  597.                             Goto LABEL011
  598.                         Endif
  599.                     EndWhile
  600.                     Return
  601.                     :LABEL006
  602.                     Color 7
  603.                     Cls
  604.                     If (Exist(STRING005 + PPEName() + ".HDR")) DispFile STRING005 + PPEName() + ".HDR", 1 + 2
  605.                     If ((GrafMode() <> "A") && (GrafMode() <> "N")) Then
  606.                         Print TSTRING020(6)
  607.                     Else
  608.                         Print TSTRING020(8)
  609.                     Endif
  610.                     INTEGER007 = GetY()
  611.                 Endif
  612.                 :LABEL007
  613.                 StartDisp 1
  614.                 If ((GrafMode() <> "A") && (GrafMode() <> "N")) Then
  615.                     AnsiPos 1, INTEGER007 - 1
  616.                     Print TSTRING020(6)
  617.                     If ((GrafMode() <> "A") && (GrafMode() <> "N")) Then
  618.                         AnsiPos 1, INTEGER007
  619.                         Color 7
  620.                         For INTEGER008 = 1 To INTEGER002
  621.                             PrintLn "@CLREOL@"
  622.                         Next
  623.                         AnsiPos 1, INTEGER007
  624.                     Endif
  625.                 Endif
  626.                 INTEGER004 = 0
  627.                 INTEGER005 = 0
  628.                 INTEGER006 = 0
  629.                 FOpen 1, STRING018, 2, 0
  630.                 FGet 1, STRING016
  631.                 FGet 1, INTEGER001
  632.                 If (INTEGER001 == 1) STRING019 = 76
  633.                 If (INTEGER001 == 2) STRING019 = 36
  634.                 If (INTEGER001 == 3) STRING019 = 23
  635.                 While (Ferr(1) == 0) Do
  636.                     Inc INTEGER004
  637.                     FGet 1, STRING015
  638.                     INTEGER013 = 2
  639.                     If (((Len(STRING015) == 0) && (INTEGER005 == 0)) && (INTEGER004 == 1)) Then
  640.                         Newline
  641.                         FClose 1
  642.                         Goto LABEL007
  643.                     Endif
  644.                     If (Len(STRING015) == 0) Break
  645.                     STRING012 = Left(STRING015, 80)
  646.                     STRING013 = RTrim(Right(Left(STRING015, 110), 30), Chr(32))
  647.                     STRING014 = RTrim(Right(Left(STRING015, 113), 3), Chr(32))
  648.                     STRING034 = Right(STRING015, 1)
  649.                     If (Len(STRING013) <= 12) STRING013 = STRING003 + STRING013
  650.                     If ((STRING034 == Chr(42)) && Exist(STRING013)) INTEGER013 = 3
  651.                     TSTRING020(0) = ReplaceStr(TSTRING020(INTEGER013), "@NUM@", INTEGER004)
  652.                     STRING012 = Left(STRING012, STRING019 - Len(StripAtx(ReplaceStr(TSTRING020(2), "@NUM@", "."))) + Len(STRING012) - Len(StripAtx(STRING012)))
  653.                     Print Space(Len(StripAtx(ReplaceStr(TSTRING020(INTEGER013), "@NUM@", ".."))) - Len(StripAtx(TSTRING020(0)))) + TSTRING020(0)
  654.                     If (((CurSec() < STRING014) || (Exist(STRING013) == 0)) && (INTEGER013 <> 3)) Then
  655.                         Print Chr(32) + STRING010 + StripAtx(STRING012)
  656.                     Else
  657.                         Print Chr(32) + STRING009 + STRING012
  658.                     Endif
  659.                     Print Space(STRING019 - Len(StripAtx(TSTRING020(0))) - Len(StripAtx(STRING012)) + Len(INTEGER004))
  660.                     If (GetX() >= 78) Then
  661.                         Newline
  662.                         Inc INTEGER005
  663.                     Endif
  664.                     If (INTEGER005 == INTEGER002) Then
  665.                         Inc INTEGER006
  666.                         If ((GrafMode() <> "A") && (GrafMode() <> "N")) Then
  667.                             Print TSTRING020(6)
  668.                             Goto LABEL008
  669.                         Endif
  670.                         Print TSTRING020(8)
  671.                         :LABEL008
  672.                         BOOLEAN008 = 1
  673.                         Gosub LABEL003
  674.                         INTEGER005 = 0
  675.                     Endif
  676.                 EndWhile
  677.                 FClose 1
  678.                 If (INTEGER005 <> INTEGER002) Then
  679.                     For INTEGER008 = 1 To INTEGER002 - INTEGER005
  680.                         Newline
  681.                     Next
  682.                 Endif
  683.                 If (GetX() <> 1) Newline
  684.                 If ((GrafMode() <> "A") && (GrafMode() <> "N")) Then
  685.                     Print TSTRING020(6)
  686.                 Else
  687.                     Print TSTRING020(8)
  688.                 Endif
  689.                 BOOLEAN008 = 0
  690.                 Gosub LABEL003
  691.                 Newline
  692.                 If (BOOLEAN006) AnsiPos 1, INTEGER007
  693.                 Goto LABEL007
  694.                 :LABEL009
  695.                 FClose 1
  696.                 Color 7
  697.                 INTEGER018 = STRING038
  698.                 PROC001(INTEGER018, STRING045, STRING043, STRING044, STRING034)
  699.                 If (Len(STRING043) <= 12) STRING043 = STRING003 + STRING043
  700.                 If ((CurSec() < STRING044) && BOOLEAN001) Then
  701.                     Log "- Security violation Bulletin/Menu (.." + Right(STRING043, 12) + ")", 0
  702.                     Goto LABEL007
  703.                 Endif
  704.                 If ((Exist(STRING043) == 0) && BOOLEAN001) Then
  705.                     Log "- Bulletin/Menu (.." + Right(STRING043, 12) + ") does not exist", 0
  706.                     Goto LABEL007
  707.                 Endif
  708.                 If (((STRING034 == Chr(42)) && Exist(STRING043)) && (CurSec() >= STRING044)) Then
  709.                     INTEGER015 = 0
  710.                     INTEGER016 = 0
  711.                     FAppend 1, STRING003 + PPEName() + ".A" + String(PcbNode()), 2, 0
  712.                     FPutLn 1, STRING018
  713.                     FClose 1
  714.                     If ((GrafMode() <> "A") && (GrafMode() <> "N")) Then
  715.                         AnsiPos 1, INTEGER007
  716.                         Color 7
  717.                         For INTEGER008 = 1 To INTEGER002
  718.                             PrintLn "@CLREOL@"
  719.                         Next
  720.                         AnsiPos 1, INTEGER007
  721.                     Endif
  722.                     STRING018 = STRING043
  723.                     STRING038 = ""
  724.                     If (BOOLEAN001) Log "- User entered menu (.." + Right(STRING043, 12) + ")", 0
  725.                     If ((GrafMode() <> "A") && (GrafMode() <> "N")) Then
  726.                         Goto LABEL007
  727.                         Goto LABEL010
  728.                     Endif
  729.                     Goto LABEL006
  730.                 Endif
  731.                 :LABEL010
  732.                 If (Exist(STRING043) && (CurSec() >= STRING044)) Then
  733.                     Cls
  734.                     StartDisp 2
  735.                     If (BOOLEAN001) Log "- User viewed bulletin (.." + Right(STRING043, 12) + ")", 0
  736.                     DispFile STRING043, 1 + 4 + 2
  737.                     Newline
  738.                     Wait
  739.                     StartDisp 1
  740.                 Endif
  741.                 Goto LABEL006
  742.             Endif
  743.         Endif
  744.     Endif
  745.     :LABEL011
  746.     If (BOOLEAN001) Log "--- Bulletin Menu System " + STRING017 + " (Closed) at (" + String(Time()) + ") ---", 1
  747.     If (BOOLEAN004) Then
  748.         Color 7
  749.         Cls
  750.     Endif
  751.     End
  752.  
  753. ;------------------------------------------------------------------------------
  754. ;
  755. ; Usage report (before postprocessing)
  756. ;
  757. ; ■ Statements used :
  758. ;
  759. ;    2       End
  760. ;    6       Cls
  761. ;    1       ClrEol
  762. ;    1       Wait
  763. ;    28      Color 
  764. ;    153     Goto 
  765. ;    162     Let 
  766. ;    36      Print 
  767. ;    12      PrintLn 
  768. ;    132     If 
  769. ;    4       DispFile 
  770. ;    15      FOpen 
  771. ;    1       FAppend 
  772. ;    21      FClose 
  773. ;    26      FGet 
  774. ;    4       FPutLn 
  775. ;    7       StartDisp 
  776. ;    9       Delete 
  777. ;    11      Log 
  778. ;    3       Gosub 
  779. ;    2       Return
  780. ;    3       Delay 
  781. ;    6       Inc 
  782. ;    1       Dec 
  783. ;    19      Newline
  784. ;    2       Newlines 
  785. ;    1       RdUNet 
  786. ;    1       WrUNet 
  787. ;    28      AnsiPos 
  788. ;    6       SPrint 
  789. ;    4       SPrintLn 
  790. ;    1       MPrint 
  791. ;    3       Rename 
  792. ;    1       FSeek 
  793. ;    3       FRead 
  794. ;    1       Copy 
  795. ;    1       Download 
  796. ;    1       EndProc
  797. ;    1       EndFunc
  798. ;
  799. ;
  800. ; ■ Functions used :
  801. ;
  802. ;    4       *
  803. ;    226     +
  804. ;    40      -
  805. ;    63      ==
  806. ;    39      <>
  807. ;    19      <
  808. ;    14      <=
  809. ;    5       >
  810. ;    28      >=
  811. ;    84      !
  812. ;    51      &&
  813. ;    17      ||
  814. ;    70      Len(
  815. ;    10      Upper()
  816. ;    19      Left()
  817. ;    20      Right()
  818. ;    2       Space()
  819. ;    4       Ferr()
  820. ;    44      Chr()
  821. ;    4       Asc()
  822. ;    6       InStr()
  823. ;    24      RTrim()
  824. ;    1       Date()
  825. ;    3       Time()
  826. ;    38      StripAtx()
  827. ;    1       Replace()
  828. ;    14      Strip()
  829. ;    2       Inkey()
  830. ;    29      String()
  831. ;    3       CurConf()
  832. ;    8       PPEPath()
  833. ;    24      PcbNode()
  834. ;    2       UN_Name()
  835. ;    1       UN_City()
  836. ;    6       CurSec()
  837. ;    17      Exist()
  838. ;    2       I2S()
  839. ;    1       Carrier()
  840. ;    2       LangExt()
  841. ;    24      GetX()
  842. ;    23      GetY()
  843. ;    23      GrafMode()
  844. ;    2       FileInf()
  845. ;    30      PPEName()
  846. ;    7       ScrText()
  847. ;    5       ReplaceStr()
  848. ;    5       MegaNum()
  849. ;
  850. ;------------------------------------------------------------------------------
  851. ;
  852. ; Analysis flags : M
  853. ;
  854. ; M - Send text to modem only ■ 4
  855. ;     Some informations are sent only to the modem, not to the local
  856. ;     screen, this is a well known way to make stealth backdoors, Check!
  857. ;     ■ Search for : SENDMODEM, MPRINT, MPRINTLN
  858. ;
  859. ;------------------------------------------------------------------------------
  860. ;
  861. ; Postprocessing report
  862. ;
  863. ;    11      For/Next
  864. ;    9       While/EndWhile
  865. ;    64      If/Then or If/Then/Else
  866. ;    0       Select Case
  867. ;
  868. ;------------------------------------------------------------------------------
  869. ;                 AEGiS Corp - Break the routines, code against the machines!
  870. ;------------------------------------------------------------------------------
  871.