home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / PWAULTP3.ZIP / PWAPRGMS.A02 / PWA95 / PWAEBS10.ZIP / EBS.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1995-06-24  |  9KB  |  601 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.     DWord    DWORD001
  22.     DWord    DWORD002
  23.     Integer  INTEGER001
  24.     Integer  INTEGER002
  25.     Integer  INTEGER003
  26.     Integer  INTEGER004
  27.     Real     REAL001
  28.     String   STRING001
  29.     String   STRING002
  30.     String   STRING003
  31.     String   STRING005
  32.     String   STRING007
  33.     String   STRING008
  34.     String   STRING009
  35.     String   STRING010
  36.     String   STRING011
  37.     String   STRING012
  38.     String   STRING013
  39.     String   STRING014
  40.     String   STRING015
  41.     String   STRING016
  42.     String   STRING017
  43.     String   STRING018
  44.     String   STRING019
  45.     String   STRING020
  46.     String   STRING021
  47.     String   STRING022
  48.     Byte     BYTE001
  49.     Byte     BYTE002
  50.     Byte     BYTE003
  51.     Byte     BYTE004
  52.     Byte     BYTE005
  53.     Byte     BYTE006
  54.     Int      INT001
  55.     Int      INT002
  56.     Int      INT003
  57.     Int      INT004
  58.     Int      INT005
  59.     Declare  Function FUNCTION001() String
  60.     Declare  Function FUNCTION002(Integer INTEGER010) String
  61.     Declare  Function FUNCTION003(Integer INTEGER011) String
  62.     Declare  Function FUNCTION004(Integer INTEGER007) String
  63.     Declare  Function FUNCTION005(Integer INTEGER008) String
  64.     Declare  Function FUNCTION006(Integer INTEGER009) String
  65.     Declare  Procedure PROC001()
  66.     Declare  Procedure PROC002()
  67.     Declare  Procedure PROC003()
  68.     Declare  Procedure PROC004()
  69.     Declare  Procedure PROC005()
  70.     Declare  Procedure PROC006()
  71.     Declare  Procedure PROC007()
  72.     Declare  Procedure PROC008(Boolean BOOLEAN003)
  73.     Declare  Procedure PROC009(String STRING004)
  74.     Declare  Procedure PROC010(String STRING006)
  75.     Declare  Procedure PROC011()
  76.     Declare  Procedure PROC012(DWord DWORD003, Integer INTEGER005, Integer INTEGER006)
  77.  
  78. ;------------------------------------------------------------------------------
  79.  
  80.     If (1 < 0) Goto LABEL001
  81.     BOOLEAN001 = 1 ; PPLC BUG!
  82.     Goto LABEL002
  83.     :LABEL001
  84.     BOOLEAN001 = 0
  85.     :LABEL002
  86.     PROC001()
  87.     PROC002()
  88.     End
  89.  
  90. ;------------------------------------------------------------------------------
  91.  
  92.     Procedure PROC002()
  93.  
  94.     Int      INT001
  95.  
  96.     If (Exist(STRING002)) Then
  97.         PROC003()
  98.     Endif
  99.  
  100.     EndProc
  101.  
  102.  
  103. ;------------------------------------------------------------------------------
  104.  
  105.     Procedure PROC005()
  106.  
  107.     Print ReadLine(STRING003, 1)
  108.     Backup 2
  109.  
  110.     EndProc
  111.  
  112.  
  113. ;------------------------------------------------------------------------------
  114.  
  115.     Procedure PROC004()
  116.  
  117.     If (Exist(PPEPath() + "MENU." + LangExt())) Then
  118.         DispFile PPEPath() + "MENU." + LangExt(), 0
  119.     Endif
  120.  
  121.     EndProc
  122.  
  123.  
  124. ;------------------------------------------------------------------------------
  125.  
  126.     Procedure PROC003()
  127.  
  128.     Byte     BYTE001
  129.     Boolean  BOOLEAN002
  130.  
  131.     PROC004()
  132.     PROC005()
  133.     BOOLEAN002 = 0
  134.     :LABEL003
  135.     If (BOOLEAN002) Goto LABEL004
  136.     BYTE001 = Asc(Inkey())
  137.     Delay 1
  138.     Select Case (BYTE001)
  139.         Case 49
  140.             Print Chr(BYTE001)
  141.             PROC009(STRING002)
  142.             PROC004()
  143.             PROC005()
  144.         Case 50
  145.             Print Chr(BYTE001)
  146.             PROC010(STRING002)
  147.             PROC004()
  148.             PROC005()
  149.         Case 51
  150.             Print Chr(BYTE001)
  151.             PROC007()
  152.             PROC008(0)
  153.             BOOLEAN002 = 1
  154.         Case 52
  155.             Print Chr(BYTE001)
  156.             PROC008(1)
  157.             BOOLEAN002 = 1
  158.         Case 53
  159.         Case 110
  160.             Print Chr(BYTE001)
  161.             BOOLEAN002 = 1
  162.     End Select
  163.     Goto LABEL003
  164.     :LABEL004
  165.     Newline
  166.     PrintLn "@X08Enhanced Batch Save v1.0 by Drew [PWA]@X07"
  167.  
  168.     EndProc
  169.  
  170.  
  171. ;------------------------------------------------------------------------------
  172.  
  173.     Procedure PROC007()
  174.  
  175.     Int      INT002
  176.  
  177.     Log "EBS - Batch restored.", 0
  178.     If (Exist(STRING001)) Delete STRING001
  179.     Newline
  180.     Newline
  181.     Print ReadLine(STRING003, 2)
  182.     Shell 1, INT002, "copy " + STRING002 + " " + STRING001, ""
  183.     PrintLn ReadLine(STRING003, 4)
  184.  
  185.     EndProc
  186.  
  187.  
  188. ;------------------------------------------------------------------------------
  189.  
  190.     Procedure PROC008(Boolean BOOLEAN003)
  191.  
  192.     If (BOOLEAN003) Then
  193.         Newline
  194.         Newline
  195.         Print ReadLine(STRING003, 3)
  196.     Endif
  197.     Delete STRING002
  198.     If (BOOLEAN003) Then
  199.         PrintLn ReadLine(STRING003, 4)
  200.     Endif
  201.  
  202.     EndProc
  203.  
  204.  
  205. ;------------------------------------------------------------------------------
  206.  
  207.     Procedure PROC009(String STRING004)
  208.  
  209.     Byte     BYTE002
  210.     String   STRING005
  211.     DWord    DWORD001
  212.  
  213.     If (Exist(STRING004)) Then
  214.         DWORD001 = FileInf(STRING004, 4) / 129
  215.         StartDisp 0
  216.         StartDisp 2
  217.         Cls
  218.         DefColor
  219.         FOpen 1, STRING004, 2, 0
  220.         FDefIn 1
  221.         For BYTE002 = 1 To DWORD001
  222.             FSeek 1, 66, 1
  223.             FDRead STRING005, 13
  224.             Print STRING005 + Space(15 - Len(STRING005))
  225.             If (!BYTE002 % 5) Newline
  226.             If (Abort()) Then
  227.                 BYTE002 = DWORD001
  228.                 ResetDisp
  229.             Endif
  230.             FSeek 1, 50, 1
  231.         Next
  232.         FClose 1
  233.         Newline
  234.         Newline
  235.         Wait
  236.     Endif
  237.  
  238.     EndProc
  239.  
  240.  
  241. ;------------------------------------------------------------------------------
  242.  
  243.     Procedure PROC010(String STRING006)
  244.  
  245.     Byte     BYTE003
  246.     Integer  INTEGER001
  247.     Integer  INTEGER002
  248.     Integer  INTEGER003
  249.     Integer  INTEGER004
  250.     String   STRING007
  251.     String   STRING008
  252.     DWord    DWORD002
  253.  
  254.     If (Exist(STRING006)) Then
  255.         DWORD002 = FileInf(STRING006, 4) / 129
  256.         StartDisp 0
  257.         StartDisp 2
  258.         PROC011()
  259.         INTEGER003 = 0
  260.         INTEGER004 = 0
  261.         FOpen 1, STRING006, 2, 0
  262.         FDefIn 1
  263.         For BYTE003 = 1 To DWORD002
  264.             FSeek 1, 66, 1
  265.             FDRead STRING007, 13
  266.             FDRead INTEGER001, 4
  267.             FDRead INTEGER002, 4
  268.             STRING008 = ReadLine(STRING003, 5)
  269.             STRING008 = ReplaceStr(STRING008, "%N%", String(BYTE003))
  270.             STRING008 = ReplaceStr(STRING008, "%NAME%", STRING007)
  271.             STRING008 = ReplaceStr(STRING008, "%BYTES%", FUNCTION002(INTEGER001))
  272.             STRING008 = ReplaceStr(STRING008, "%MB%", FUNCTION003(INTEGER001))
  273.             STRING008 = ReplaceStr(STRING008, "%H%", FUNCTION004(INTEGER002))
  274.             STRING008 = ReplaceStr(STRING008, "%M%", FUNCTION005(INTEGER002))
  275.             STRING008 = ReplaceStr(STRING008, "%S%", FUNCTION006(INTEGER002))
  276.             PrintLn STRING008
  277.             INTEGER003 = INTEGER003 + INTEGER001
  278.             INTEGER004 = INTEGER004 + INTEGER002
  279.             If (Abort()) Then
  280.                 BYTE003 = DWORD002
  281.                 ResetDisp
  282.                 StartDisp 0
  283.                 StartDisp 2
  284.             Endif
  285.             FSeek 1, 42, 1
  286.         Next
  287.         FClose 1
  288.         PROC012(DWORD002, INTEGER003, INTEGER004)
  289.         Wait
  290.     Endif
  291.  
  292.     EndProc
  293.  
  294.  
  295. ;------------------------------------------------------------------------------
  296.  
  297.     Procedure PROC011()
  298.  
  299.     If (Exist(PPEPath() + "TOP." + LangExt())) Then
  300.         DispFile PPEPath() + "TOP." + LangExt(), 0
  301.     Endif
  302.  
  303.     EndProc
  304.  
  305.  
  306. ;------------------------------------------------------------------------------
  307.  
  308.     Procedure PROC012(DWord DWORD003, Integer INTEGER005, Integer INTEGER006)
  309.  
  310.     String   STRING009
  311.  
  312.     If (Exist(PPEPath() + "BOTTOM." + LangExt())) Then
  313.         FOpen 1, PPEPath() + "BOTTOM." + LangExt(), 0, 2
  314.         FDefIn 1
  315.         FDGet STRING009
  316.         :LABEL005
  317.         If (Ferr(1)) Goto LABEL006
  318.         STRING009 = ReplaceStr(STRING009, "%NF%", String(DWORD003))
  319.         STRING009 = ReplaceStr(STRING009, "%BYTES%", FUNCTION002(INTEGER005))
  320.         STRING009 = ReplaceStr(STRING009, "%MB%", FUNCTION003(INTEGER005))
  321.         STRING009 = ReplaceStr(STRING009, "%H%", FUNCTION004(INTEGER006))
  322.         STRING009 = ReplaceStr(STRING009, "%M%", FUNCTION005(INTEGER006))
  323.         STRING009 = ReplaceStr(STRING009, "%S%", FUNCTION006(INTEGER006))
  324.         PrintLn STRING009
  325.         FDGet STRING009
  326.         Goto LABEL005
  327.         :LABEL006
  328.         FClose 1
  329.     Endif
  330.  
  331.     EndProc
  332.  
  333.  
  334. ;------------------------------------------------------------------------------
  335.  
  336.     Function FUNCTION004(Integer INTEGER007) String
  337.  
  338.     Integer  INTEGER008
  339.  
  340.     FUNCTION004 = String(INTEGER007 / 3600)
  341.  
  342.     EndFunc
  343.  
  344.  
  345. ;------------------------------------------------------------------------------
  346.  
  347.     Function FUNCTION005(Integer INTEGER008) String
  348.  
  349.     Integer  INTEGER009
  350.  
  351.     INTEGER008 = INTEGER008 - (INTEGER008 / 3600) * 3600
  352.     FUNCTION005 = String(INTEGER008 / 60)
  353.  
  354.     EndFunc
  355.  
  356.  
  357. ;------------------------------------------------------------------------------
  358.  
  359.     Function FUNCTION006(Integer INTEGER009) String
  360.  
  361.     Integer  INTEGER010
  362.  
  363.     INTEGER009 = INTEGER009 - (INTEGER009 / 3600) * 3600
  364.     INTEGER009 = INTEGER009 - (INTEGER009 / 60) * 60
  365.     FUNCTION006 = String(INTEGER009)
  366.  
  367.     EndFunc
  368.  
  369.  
  370. ;------------------------------------------------------------------------------
  371.  
  372.     Function FUNCTION002(Integer INTEGER010) String
  373.  
  374.     String   STRING014
  375.     String   STRING015
  376.     Byte     BYTE004
  377.     Byte     BYTE005
  378.     Integer  INTEGER011
  379.  
  380.     STRING014 = String(INTEGER010)
  381.     BYTE004 = Len(STRING014)
  382.     BYTE005 = 0
  383.     While (BYTE004 > 0) Do
  384.         Inc BYTE005
  385.         STRING015 = Mid(STRING014, BYTE004, 1) + STRING015
  386.         Dec BYTE004
  387.         If (!BYTE005 % 3 && (BYTE004 > 0)) STRING015 = "," + STRING015
  388.     EndWhile
  389.     STRING015 = Space(13 - Len(StripAtx(STRING015))) + STRING015
  390.     FUNCTION002 = STRING015
  391.  
  392.     EndFunc
  393.  
  394.  
  395. ;------------------------------------------------------------------------------
  396.  
  397.     Function FUNCTION003(Integer INTEGER011) String
  398.  
  399.     String   STRING017
  400.     Real     REAL001
  401.     Int      INT003
  402.     Int      INT004
  403.     Int      INT005
  404.  
  405.     REAL001 = ToReal(INTEGER011) / 1.024e+06
  406.     INT003 = ToInt(REAL001)
  407.     INT004 = ToInt((REAL001 - INT003) * 10)
  408.     STRING017 = String(INT003) + "." + String(INT004)
  409.     FUNCTION003 = STRING017
  410.  
  411.     EndFunc
  412.  
  413.  
  414. ;------------------------------------------------------------------------------
  415.  
  416.     Procedure PROC006()
  417.  
  418.     Int      INT005
  419.     String   STRING018
  420.  
  421.     If (Exist(STRING001) && FileInf(STRING001, 4)) Then
  422.         If (Exist(PPEPath() + "savedata\nul")) Goto LABEL007
  423.         Shell 1, INT005, "if not exist " + PPEPath() + "savedata\nul md " + PPEPath() + "savedata", ""
  424.         :LABEL007
  425.         STRING018 = FUNCTION001()
  426.         STRING002 = PPEPath() + "savedata\" + STRING018
  427.         If (Exist(STRING002)) Then
  428.             Delete STRING002
  429.         Endif
  430.         Shell 1, INT005, "copy " + STRING001 + " " + STRING002, ""
  431.         Log "EBS - Saved batch. :)", 0
  432.     ElseIf (Exist(STRING001) && !FileInf(STRING001, 4)) Then
  433.         Log "EBS - filesize is zero, PCB still has it open (nothing saved)", 0
  434.     Else
  435.         Log "EBS - Nothing saved.", 0
  436.     Endif
  437.  
  438.     EndProc
  439.  
  440.  
  441. ;------------------------------------------------------------------------------
  442.  
  443.     Function FUNCTION001() String
  444.  
  445.     String   STRING020
  446.     String   STRING021
  447.     Byte     BYTE006
  448.     String   STRING022
  449.  
  450.     STRING021 = ""
  451.     STRING020 = U_Name()
  452.     For BYTE006 = 1 To Len(STRING020)
  453.         If ((InStr(Mask_Pwd(), Mid(STRING020, BYTE006, 1)) > 0) && (InStr(Chr(32) + Chr(34) + "+,/;<>=|*%.:\^`?", Mid(STRING020, BYTE006, 1)) == 0)) Then
  454.             STRING021 = STRING021 + Mid(STRING020, BYTE006, 1)
  455.             If (Len(STRING021) == 8) BYTE006 = Len(STRING020)
  456.         Endif
  457.     Next
  458.     FUNCTION001 = STRING021
  459.  
  460.     EndFunc
  461.  
  462.  
  463. ;------------------------------------------------------------------------------
  464.  
  465.     Procedure PROC001()
  466.  
  467.     String   STRING022
  468.  
  469.     GetUser
  470.     WrUNet PcbNode(), "Q", UN_Name(), UN_City(), "EBS: Processing batch", " "
  471.     STRING003 = PPEPath() + "STRINGS." + LangExt()
  472.     If (PcbNode()) Then
  473.         STRING001 = GetEnv("PCBDRIVE") + GetEnv("PCBDIR") + "\flist." + String(PcbNode())
  474.     Else
  475.         STRING001 = GetEnv("PCBDRIVE") + GetEnv("PCBDIR") + "\flist."
  476.     Endif
  477.     STRING022 = FUNCTION001()
  478.     STRING002 = PPEPath() + "savedata\" + STRING022
  479.     STRING022 = Lower(GetToken())
  480.     If (STRING022 == "save") Then
  481.         PROC006()
  482.         End
  483.     Endif
  484.  
  485.     EndProc
  486.  
  487.  
  488. ;------------------------------------------------------------------------------
  489. ;
  490. ; Usage report (before postprocessing)
  491. ;
  492. ; ■ Statements used :
  493. ;
  494. ;    2       End
  495. ;    1       Cls
  496. ;    2       Wait
  497. ;    44      Goto 
  498. ;    67      Let 
  499. ;    9       Print 
  500. ;    5       PrintLn 
  501. ;    34      If 
  502. ;    2       DispFile 
  503. ;    3       FOpen 
  504. ;    3       FClose 
  505. ;    2       ResetDisp
  506. ;    6       StartDisp 
  507. ;    1       GetUser
  508. ;    1       DefColor
  509. ;    3       Delete 
  510. ;    4       Log 
  511. ;    1       Delay 
  512. ;    1       Inc 
  513. ;    1       Dec 
  514. ;    8       Newline
  515. ;    3       Shell 
  516. ;    1       WrUNet 
  517. ;    1       Backup 
  518. ;    4       FSeek 
  519. ;    3       FDefIn 
  520. ;    2       FDGet 
  521. ;    4       FDRead 
  522. ;    12      EndProc
  523. ;    6       EndFunc
  524. ;
  525. ;
  526. ; ■ Functions used :
  527. ;
  528. ;    4       *
  529. ;    8       /
  530. ;    2       %
  531. ;    548     +
  532. ;    6       -
  533. ;    8       ==
  534. ;    4       <
  535. ;    3       <=
  536. ;    3       >
  537. ;    7       >=
  538. ;    64      !
  539. ;    10      &&
  540. ;    3       ||
  541. ;    7       Len(
  542. ;    1       Lower()
  543. ;    4       Mid()
  544. ;    2       Space()
  545. ;    1       Ferr()
  546. ;    7       Chr()
  547. ;    1       Asc()
  548. ;    2       InStr()
  549. ;    2       Abort()
  550. ;    1       U_Name()
  551. ;    1       StripAtx()
  552. ;    1       Inkey()
  553. ;    9       String()
  554. ;    1       Mask_Pwd()
  555. ;    12      PPEPath()
  556. ;    3       PcbNode()
  557. ;    6       ReadLine()
  558. ;    1       UN_Name()
  559. ;    1       UN_City()
  560. ;    1       GetToken()
  561. ;    4       GetEnv()
  562. ;    11      Exist()
  563. ;    7       LangExt()
  564. ;    4       FileInf()
  565. ;    13      ReplaceStr()
  566. ;    1       ToReal()
  567. ;    2       ToInt()
  568. ;
  569. ;------------------------------------------------------------------------------
  570. ;
  571. ; Analysis flags : S
  572. ;
  573. ; S - Shell to DOS ■ 5
  574. ;     This may be normal if the PPE need to execute an external command,
  575. ;     but may be actually anything... nasty (formating HD, rebooting,...)
  576. ;     or usefull (sorting, maintenance,...). Check!
  577. ;     ■ Search for : SHELL
  578. ;
  579. ;
  580. ;------------------------------------------------------------------------------
  581. ;
  582. ;     One or more PPLC bugs were found, this is not a PPLX error, but PPLX is  
  583. ;     reporting the error ;)  Some statements  like VAR = !!!!10, VAR = !0*!0  
  584. ;     or similar things are not handled  correctly by PPLC, some may use this  
  585. ;     to  avoid a  correct decompilation...  This doesn't mean that there  is  
  586. ;     actually an error, but the probability of error is high...               
  587. ;     ■ Search for : PPLC BUG
  588. ;
  589. ;------------------------------------------------------------------------------
  590. ;
  591. ; Postprocessing report
  592. ;
  593. ;    3       For/Next
  594. ;    1       While/EndWhile
  595. ;    16      If/Then or If/Then/Else
  596. ;    1       Select Case
  597. ;
  598. ;------------------------------------------------------------------------------
  599. ;                 AEGiS Corp - Break the routines, code against the machines!
  600. ;------------------------------------------------------------------------------
  601.