home *** CD-ROM | disk | FTP | other *** search
/ Collection of Hack-Phreak Scene Programs / cleanhpvac.zip / cleanhpvac / AXDOS10.ZIP / PCBDOS.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1996-09-06  |  7KB  |  570 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.2O (Encryption type I) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Boolean  BOOLEAN001
  20.     Integer  INTEGER001
  21.     String   STRING001
  22.     String   STRING002
  23.     String   STRING003
  24.     String   STRING004
  25.     String   STRING005
  26.     String   STRING006
  27.     String   TSTRING007(10)
  28.     String   TSTRING008(1)
  29.     String   STRING009
  30.     String   STRING010
  31.     String   STRING011
  32.     String   STRING012
  33.     String   STRING013
  34.     String   STRING014
  35.     String   STRING015
  36.     String   STRING016
  37.     String   STRING017
  38.     String   STRING018
  39.     String   STRING019
  40.     String   STRING020
  41.     String   STRING021
  42.     String   STRING022
  43.     String   STRING023
  44.     String   STRING024
  45.     String   STRING025
  46.     String   STRING026
  47.     String   STRING029
  48.     String   STRING030
  49.     String   STRING031
  50.     Int      INT001
  51.     Int      INT002
  52.     Int      INT003
  53.     Declare  Function FUNCTION001(Integer INTEGER005) String
  54.     Declare  Function FUNCTION002() String
  55.     Declare  Procedure PROC001(Var String STRING027, Integer INTEGER002)
  56.  
  57. ;------------------------------------------------------------------------------
  58.  
  59.     STRING005 = Cwd()
  60.     TSTRING008(0) = " @X08· @X09PCBoard DOS Version 1.00 @X08· @X07Coded by @X0FM@X07av@X08erick [@X0CANTi@X08-@X0FX@X08]"
  61.     TSTRING008(1) = " @X08· @X07Based on iNiQUiTY's MicroDOS(C) by Mike Fricker"
  62.     FOpen 1, PPEPath() + "PCBDOS.CFG", 0, 0
  63.     FGet 1, STRING015
  64.     FGet 1, STRING003
  65.     FGet 1, STRING021
  66.     FGet 1, STRING018
  67.     FGet 1, STRING019
  68.     FGet 1, STRING016
  69.     FGet 1, STRING017
  70.     FGet 1, STRING022
  71.     FGet 1, STRING023
  72.     FGet 1, STRING024
  73.     FGet 1, STRING025
  74.     FGet 1, STRING026
  75.     FGet 1, STRING020
  76.     FGet 1, STRING009
  77.     FGet 1, STRING010
  78.     FGet 1, STRING011
  79.     FGet 1, STRING012
  80.     FGet 1, STRING014
  81.     FGet 1, STRING013
  82.     FClose 1
  83.     RdUNet PcbNode()
  84.     WrUNet PcbNode(), "B", UN_Name(), UN_City(), UN_Name(), ""
  85.     Cls
  86.     PrintLn STRING015
  87.     Newlines 2
  88.     PrintLn TSTRING008(0)
  89.     PrintLn TSTRING008(1)
  90.     Newline
  91.     INT002 = 0
  92.     :LABEL001
  93.     StartDisp 1
  94.     BOOLEAN001 = 0
  95.     Newline
  96.     OpText Cwd()
  97.     Print STRING003
  98.     PROC001(STRING004, 80 - Len(Cwd()))
  99.     If (STRING004 == "") Goto LABEL001
  100.     STRING006 = STRING004
  101.     STRING004 = Upper(STRING004)
  102.     If (InStr(STRING004, "/P") > 0) Then
  103.         STRING004 = StripStr(STRING004, "/P")
  104.         BOOLEAN001 = 1
  105.     Endif
  106.     Tokenize STRING004
  107.     STRING004 = GetToken()
  108.     If (STRING004 == "EXIT") Then
  109.         ChDir STRING005
  110.         End
  111.     Endif
  112.     Select Case (STRING004)
  113.         Case "?", "HELP"
  114.             If (BOOLEAN001) StartDisp 2
  115.             DispFile PPEPath() + "PCBDOS.HLP", 0
  116.         Case "DIR"
  117.             If (BOOLEAN001) StartDisp 2
  118.             Newlines 2
  119.             STRING004 = GetToken()
  120.             If (STRING004 == "") STRING004 = "*.*"
  121.             STRING001 = FUNCTION002()
  122.             OpText STRING001
  123.             PrintLn STRING020
  124.             Newline
  125.             STRING001 = FindFirst(STRING004)
  126.         Case ""
  127.             OpText STRING004
  128.             PrintLn STRING019
  129.             INTEGER001 = 0
  130.             While (STRING001 <> "") Do
  131.                 STRING004 = ReplaceStr(STRING009, "@FILENAME@", Trim(FileInf(STRING001, 8), " "))
  132.                 STRING004 = ReplaceStr(STRING004, "@EXT@", Left(FileInf(STRING001, 9), 3))
  133.                 STRING004 = ReplaceStr(STRING004, "@SIZE@", Space(10 - Len(StripAtx(FUNCTION001(FileInf(STRING001, 4))))) + FUNCTION001(FileInf(STRING001, 4)))
  134.                 STRING004 = ReplaceStr(STRING004, "@DATE@", ReplaceStr(String(FileInf(STRING001, 2)), "-", STRING010))
  135.                 STRING004 = ReplaceStr(STRING004, "@TIME@", ReplaceStr(Left(String(FileInf(STRING001, 3)), 5), ":", STRING011))
  136.                 INT001 = FileInf(STRING001, 5)
  137.                 If (IsBitSet(INT001, 0)) Then
  138.                     STRING004 = ReplaceStr(STRING004, "@R@", "R")
  139.                 Else
  140.                     STRING004 = ReplaceStr(STRING004, "@R@", STRING014)
  141.                 Endif
  142.                 If (IsBitSet(INT001, 1)) Then
  143.                     STRING004 = ReplaceStr(STRING004, "@H@", "H")
  144.                 Else
  145.                     STRING004 = ReplaceStr(STRING004, "@H@", STRING014)
  146.                 Endif
  147.                 If (IsBitSet(INT001, 2)) Then
  148.                     STRING004 = ReplaceStr(STRING004, "@S@", "S")
  149.                 Else
  150.                     STRING004 = ReplaceStr(STRING004, "@S@", STRING014)
  151.                 Endif
  152.                 If (IsBitSet(INT001, 5)) Then
  153.                     STRING004 = ReplaceStr(STRING004, "@A@", "A")
  154.                 Else
  155.                     STRING004 = ReplaceStr(STRING004, "@A@", STRING014)
  156.                 Endif
  157.                 If (Abort()) Goto LABEL002
  158.                 PrintLn STRING004
  159.                 Inc INTEGER001
  160.                 STRING001 = FindNext()
  161.             EndWhile
  162.             OpText FUNCTION001(INTEGER001)
  163.             PrintLn STRING013
  164.         Case "TYPE"
  165.             Newlines 2
  166.             If (BOOLEAN001) StartDisp 2
  167.             DispFile GetToken(), 0
  168.             Wait
  169.         Case "CLS"
  170.             Cls
  171.         Case "CD"
  172.             STRING004 = Trim(Right(STRING006, Len(STRING006) - 2), " ")
  173.             ChDir STRING004
  174.         Case "MD", "MKDIR"
  175.             MkDir GetToken()
  176.         Case "RD", "RMDIR"
  177.             ReDir GetToken()
  178.         Case "DEL"
  179.             STRING004 = GetToken()
  180.             STRING001 = FindFirst(STRING004)
  181.         Case ""
  182.             OpText STRING001
  183.             PrintLn STRING019
  184.         Case "*.*"
  185.             Newline
  186.             STRING004 = "N"
  187.             STRING001 = FUNCTION002() + "*.*"
  188.             OpText STRING001
  189.             InputYN STRING017, STRING004, 7
  190.             If (STRING004 == YesChar()) Then
  191.                 Delete STRING001
  192.             Endif
  193.             While (STRING001 <> "") Do
  194.                 STRING004 = "N"
  195.                 If (BOOLEAN001) Then
  196.                     Newline
  197.                     OpText Trim(STRING001, " ")
  198.                     InputYN STRING016, STRING004, 7
  199.                     If (STRING004 == YesChar()) Then
  200.                         Delete STRING001
  201.                     Endif
  202.                 Else
  203.                     Delete STRING001
  204.                 Endif
  205.                 STRING001 = FindNext()
  206.             EndWhile
  207.         Case "REN"
  208.             STRING001 = GetToken()
  209.             STRING004 = GetToken()
  210.             If ((STRING001 == "") || (STRING004 == "")) Then
  211.                 Newlines 2
  212.                 PrintLn STRING018
  213.             Else
  214.                 Rename STRING001, STRING004
  215.             Endif
  216.         Case "EXT"
  217.             STRING004 = GetToken()
  218.             If (STRING004 == "") Then
  219.                 Newlines 2
  220.                 PrintLn STRING018
  221.             Else
  222.                 STRING001 = Trim(Right(STRING006, Len(STRING006) - 3), " ")
  223.                 Tokenize STRING001
  224.                 STRING004 = GetToken()
  225.                 Newline
  226.                 OpText STRING004
  227.                 PrintLn STRING026
  228.                 SaveScrn
  229.                 Shell 1, INTEGER001, STRING004, GetToken()
  230.                 RestScrn
  231.                 If (Exist("PCBDOS.TXT")) Then
  232.                     StartDisp 2
  233.                     Newlines 2
  234.                     DispFile "PCBDOS.TXT", 0
  235.                     Delete "PCBDOS.TXT"
  236.                     Wait
  237.                 Endif
  238.             Endif
  239.         Case "PPE"
  240.             STRING004 = GetToken()
  241.             Newlines 2
  242.             If (STRING004 == "") Then
  243.                 PrintLn STRING018
  244.             Else
  245.                 STRING001 = Trim(Right(STRING006, Len(STRING006) - 3), " ")
  246.                 Call STRING001
  247.             Endif
  248.         Case "FLAG"
  249.             STRING002 = Cwd()
  250.             Newlines 2
  251.             STRING004 = GetToken()
  252.             If (STRING004 == "") Then
  253.                 PrintLn STRING018
  254.             Else
  255.                 STRING001 = FindFirst(STRING004)
  256.                 If (STRING001 == "") Then
  257.                     OpText STRING004
  258.                     PrintLn STRING019
  259.                     Goto LABEL002
  260.                 Endif
  261.                 While (STRING001 <> "") Do
  262.                     STRING001 = Trim(FUNCTION002() + STRING001, " ")
  263.                     OpText STRING001
  264.                     PrintLn STRING022
  265.                     ChDir STRING005
  266.                     Flag STRING001
  267.                     ChDir STRING002
  268.                     STRING001 = FindNext()
  269.                 EndWhile
  270.             Endif
  271.             ChDir STRING002
  272.         Case "SEND"
  273.         Case 
  274.             Newlines 2
  275.             PrintLn STRING023
  276.             STRING001 = FUNCTION002()
  277.             Newlines 2
  278.             STRING004 = GetToken()
  279.             If (STRING004 == "") Then
  280.                 PrintLn STRING018
  281.             Else
  282.                 STRING001 = FindFirst(STRING001 + STRING004)
  283.                 FOpen 1, STRING005 + "\PCBDSZ.LST", 1, 3
  284.                 While (STRING001 <> "") Do
  285.                     FPutLn 1, FUNCTION002() + STRING001
  286.                     STRING001 = Trim(FindNext(), " ")
  287.                 EndWhile
  288.                 FClose 1
  289.                 PrintLn STRING024
  290.                 Shell 1, INTEGER001, "ZMSEND.EXE", "@" + STRING005 + "\PCBDSZ.LST"
  291.                 Delete STRING005 + "\PCBDSZ.LST"
  292.                 STRING001 = GetEnv("DSZLOG")
  293.                 If (Exist(STRING001)) Delete STRING001
  294.                 Newline
  295.             Endif
  296.         Case "RECEIVE"
  297.         Case 
  298.             Newlines 2
  299.             PrintLn STRING023
  300.             STRING001 = FUNCTION002()
  301.             Newlines 2
  302.             PrintLn STRING025
  303.             Shell 1, INTEGER001, "ZMRECV.EXE", STRING001
  304.             STRING001 = GetEnv("DSZLOG")
  305.             If (Exist(STRING001)) Delete STRING001
  306.             Newline
  307.         Case "VER"
  308.             Newlines 2
  309.             PrintLn TSTRING008(0)
  310.             PrintLn TSTRING008(1)
  311.         Case Else
  312.             Newline
  313.             Print STRING021
  314.     End Select
  315.     :LABEL002
  316.     If (INT002 < 10) INT002 = INT002 + 1
  317.     TSTRING007(10) = TSTRING007(9)
  318.     TSTRING007(9) = TSTRING007(8)
  319.     TSTRING007(8) = TSTRING007(7)
  320.     TSTRING007(7) = TSTRING007(6)
  321.     TSTRING007(6) = TSTRING007(5)
  322.     TSTRING007(5) = TSTRING007(4)
  323.     TSTRING007(4) = TSTRING007(3)
  324.     TSTRING007(3) = TSTRING007(2)
  325.     TSTRING007(2) = TSTRING007(1)
  326.     TSTRING007(1) = STRING006
  327.     Goto LABEL001
  328.     End
  329.  
  330. ;------------------------------------------------------------------------------
  331.  
  332.     Procedure PROC001(Var String STRING027, Integer INTEGER002)
  333.  
  334.     String   STRING028
  335.     Integer  INTEGER003
  336.     Integer  INTEGER004
  337.  
  338.     STRING027 = ""
  339.     INTEGER003 = 0
  340.     :LABEL003
  341.     STRING028 = TInkey(0)
  342.     If (Len(STRING028) > 1) Then
  343.         If (STRING028 == "UP") Then
  344.             If (INTEGER004 < INT002) Then
  345.                 TSTRING007(INTEGER004) = STRING027
  346.                 INTEGER004 = INTEGER004 + 1
  347.                 Backup 80
  348.                 Print STRING003 + TSTRING007(INTEGER004)
  349.                 ClrEol
  350.                 INTEGER003 = Len(TSTRING007(INTEGER004))
  351.                 STRING027 = TSTRING007(INTEGER004)
  352.             Endif
  353.         Endif
  354.         If (STRING028 == "DOWN") Then
  355.             If (INTEGER004 > 0) Then
  356.                 TSTRING007(INTEGER004) = STRING027
  357.                 INTEGER004 = INTEGER004 - 1
  358.                 Backup 80
  359.                 Print STRING003 + TSTRING007(INTEGER004)
  360.                 ClrEol
  361.                 INTEGER003 = Len(TSTRING007(INTEGER004))
  362.                 STRING027 = TSTRING007(INTEGER004)
  363.             Endif
  364.         Endif
  365.     Endif
  366.     TSTRING007(INTEGER004) = STRING027
  367.     If (STRING028 == Chr(13)) Goto LABEL004
  368.     If (STRING028 == Chr(29)) Goto LABEL003
  369.     If (STRING028 == Chr(27)) Then
  370.         INTEGER003 = 0
  371.         TSTRING007(INTEGER004) = ""
  372.         STRING027 = ""
  373.         Backup 80
  374.         Print STRING003
  375.         ClrEol
  376.         Goto LABEL003
  377.     Endif
  378.     If (STRING028 == Chr(8)) Then
  379.         If (INTEGER003 == 0) Goto LABEL003
  380.         INTEGER003 = INTEGER003 - 1
  381.         Backup 1
  382.         Print " "
  383.         Backup 1
  384.         STRING027 = Left(STRING027, INTEGER003)
  385.         Goto LABEL003
  386.     Endif
  387.     If (!(Len(STRING028) == 1)) Goto LABEL003
  388.     If (Asc(STRING028) < 31) Goto LABEL003
  389.     If (INTEGER003 == INTEGER002) Goto LABEL003
  390.     STRING027 = STRING027 + STRING028
  391.     INTEGER003 = INTEGER003 + 1
  392.     Print "@X08", STRING028
  393.     Backup 1
  394.     Delay 1
  395.     Print "@X07", STRING028
  396.     Backup 1
  397.     Delay 1
  398.     Print "@X0F", STRING028
  399.     Goto LABEL003
  400.     :LABEL004
  401.     STRING027 = Trim(TSTRING007(INTEGER004), " ")
  402.  
  403.     EndProc
  404.  
  405.  
  406. ;------------------------------------------------------------------------------
  407.  
  408.     Function FUNCTION001(Integer INTEGER005) String
  409.  
  410.     Int      INT003
  411.     String   STRING030
  412.     String   STRING031
  413.  
  414.     INT003 = 1
  415.     While (((1 < 0) && (INT003 >= Len(INTEGER005) / 3 + 1)) || ((1 >= 0) && (INT003 <= Len(INTEGER005) / 3 + 1))) Do
  416.         STRING030 = Trim(Left(Right(INTEGER005, INT003 * 3), 3), " ")
  417.         If (INT003 == 1) Then
  418.             FUNCTION001 = STRING030
  419.         Else
  420.             If (STRING030 <> "") FUNCTION001 = STRING030 + STRING012 + FUNCTION001
  421.         Endif
  422.         INT003 = INT003 + 1
  423.     EndWhile
  424.  
  425.     EndFunc
  426.  
  427.  
  428. ;------------------------------------------------------------------------------
  429.  
  430.     Function FUNCTION002() String
  431.  
  432.     If (Right(Cwd(), 1) == "\") Goto LABEL005
  433.     FUNCTION002 = Cwd() + "\"
  434.     Goto LABEL006
  435.     :LABEL005
  436.     FUNCTION002 = Cwd()
  437.     :LABEL006
  438.  
  439.     EndFunc
  440.  
  441.  
  442. ;------------------------------------------------------------------------------
  443. ;
  444. ; Usage report (before postprocessing)
  445. ;
  446. ; ■ Statements used :
  447. ;
  448. ;    2       End
  449. ;    2       Cls
  450. ;    3       ClrEol
  451. ;    2       Wait
  452. ;    100     Goto 
  453. ;    94      Let 
  454. ;    9       Print 
  455. ;    22      PrintLn 
  456. ;    66      If 
  457. ;    3       DispFile 
  458. ;    2       FOpen 
  459. ;    2       FClose 
  460. ;    19      FGet 
  461. ;    1       FPutLn 
  462. ;    5       StartDisp 
  463. ;    7       Delete 
  464. ;    2       InputYN 
  465. ;    2       Delay 
  466. ;    1       Inc 
  467. ;    9       Newline
  468. ;    13      Newlines 
  469. ;    2       Tokenize 
  470. ;    3       Shell 
  471. ;    1       Call 
  472. ;    10      OpText 
  473. ;    1       RdUNet 
  474. ;    1       WrUNet 
  475. ;    7       Backup 
  476. ;    1       SaveScrn
  477. ;    1       RestScrn
  478. ;    1       Rename 
  479. ;    1       Flag 
  480. ;    1       EndProc
  481. ;    2       EndFunc
  482. ;    5       ChDir 
  483. ;    1       MkDir 
  484. ;    1       ReDir 
  485. ;
  486. ;
  487. ; ■ Functions used :
  488. ;
  489. ;    1       *
  490. ;    2       /
  491. ;    23      +
  492. ;    7       -
  493. ;    44      ==
  494. ;    5       <>
  495. ;    4       <
  496. ;    1       <=
  497. ;    3       >
  498. ;    2       >=
  499. ;    51      !
  500. ;    2       &&
  501. ;    5       ||
  502. ;    11      Len(
  503. ;    1       Upper()
  504. ;    5       Left()
  505. ;    5       Right()
  506. ;    1       Space()
  507. ;    4       Chr()
  508. ;    1       Asc()
  509. ;    1       InStr()
  510. ;    1       Abort()
  511. ;    9       Trim()
  512. ;    2       YesChar()
  513. ;    1       StripAtx()
  514. ;    2       String()
  515. ;    2       PPEPath()
  516. ;    2       PcbNode()
  517. ;    2       OnLocal()
  518. ;    2       UN_Name()
  519. ;    1       UN_City()
  520. ;    14      GetToken()
  521. ;    2       GetEnv()
  522. ;    3       Exist()
  523. ;    7       FileInf()
  524. ;    15      ReplaceStr()
  525. ;    1       StripStr()
  526. ;    4       IsBitSet()
  527. ;    4       FindFirst()
  528. ;    4       FindNext()
  529. ;    1       TInkey()
  530. ;    7       Cwd()
  531. ;
  532. ;------------------------------------------------------------------------------
  533. ;
  534. ; Analysis flags : SCfi
  535. ;
  536. ; S - Shell to DOS ■ 5
  537. ;     This may be normal if the PPE need to execute an external command,
  538. ;     but may be actually anything... nasty (formating HD, rebooting,...)
  539. ;     or usefull (sorting, maintenance,...). Check!
  540. ;     ■ Search for : SHELL
  541. ;
  542. ; C - Call child PPE ■ 3
  543. ;     This is usually normal, but may be a tricky way to launch some
  544. ;     sysop-only commands.
  545. ;     ■ Search for : CALL
  546. ;
  547. ; f - Flag files for download ■ 3
  548. ;     This may be normal if a PPE needs to send some files, but since
  549. ;     this statement allows flagging of any file on the hard disk, you
  550. ;     have to be carefull. Check!
  551. ;     ■ Search for : FLAG
  552. ;
  553. ; i - Sequencially read files in directory ■ 3
  554. ;     Program is reading files in directory sequencially, maybe to get
  555. ;     a DIR image, but this can be to look for targets to destroy
  556. ;     ■ Search for : FINDFIRST(), FINDNEXT()
  557. ;
  558. ;------------------------------------------------------------------------------
  559. ;
  560. ; Postprocessing report
  561. ;
  562. ;    0       For/Next
  563. ;    5       While/EndWhile
  564. ;    24      If/Then or If/Then/Else
  565. ;    1       Select Case
  566. ;
  567. ;------------------------------------------------------------------------------
  568. ;                 AEGiS Corp - Break the routines, code against the machines!
  569. ;------------------------------------------------------------------------------
  570.