home *** CD-ROM | disk | FTP | other *** search
/ Carsten's PPE Collection / Carstens_PPE_Collection_2007.zip / T / TURBO10.ZIP / TURBLOG.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1995-01-13  |  6KB  |  430 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  TBOOLEAN001(250)
  20.     Boolean  TBOOLEAN002(250)
  21.     Boolean  BOOLEAN003
  22.     Boolean  BOOLEAN004
  23.     Integer  INTEGER001
  24.     Integer  INTEGER002
  25.     Integer  INTEGER003
  26.     Integer  INTEGER004
  27.     Integer  INTEGER005
  28.     Integer  INTEGER006
  29.     String   STRING001
  30.     String   STRING002
  31.     String   TSTRING003(250)
  32.     String   STRING004
  33.     String   STRING005
  34.     String   STRING006
  35.     String   STRING007
  36.     String   STRING008
  37.     String   STRING009
  38.     String   STRING010
  39.     String   STRING011
  40.     String   STRING012
  41.     String   STRING013
  42.     String   STRING014
  43.     String   STRING015
  44.     String   STRING016
  45.     String   STRING017
  46.     String   STRING018
  47.     String   STRING019
  48.     String   STRING020
  49.     String   STRING021
  50.     String   STRING022
  51.     String   STRING023
  52.     String   STRING024
  53.     Declare  Procedure PROC001()
  54.     Declare  Procedure PROC002()
  55.     Declare  Procedure PROC003()
  56.     Declare  Procedure PROC004()
  57.     Declare  Procedure PROC005()
  58.     Declare  Procedure PROC006()
  59.     Declare  Procedure PROC007()
  60.  
  61. ;------------------------------------------------------------------------------
  62.  
  63.     Goto LABEL001
  64.     End
  65.  
  66. ;------------------------------------------------------------------------------
  67.  
  68.     Procedure PROC001()
  69.  
  70.     String   STRING018
  71.     String   STRING019
  72.     String   STRING020
  73.     String   STRING021
  74.     String   STRING022
  75.     String   STRING023
  76.     String   STRING024
  77.     Integer  INTEGER006
  78.  
  79.     STRING023 = Left(STRING016, 8)
  80.     Tokenize STRING023
  81.     If (TokCount() > 1) Then
  82.         STRING024 = GetToken() + "_"
  83.         STRING024 = STRING024 + GetToken()
  84.         STRING023 = Left(STRING024, 8)
  85.     Endif
  86.     FOpen 1, PPEPath() + STRING023 + ".KEY", 0, 0
  87.     FGet 1, STRING022
  88.     FGet 1, STRING018
  89.     FGet 1, STRING022
  90.     FGet 1, STRING019
  91.     FGet 1, STRING022
  92.     FClose 1
  93.     BOOLEAN004 = 1
  94.     For INTEGER006 = 1 To Len(STRING018)
  95.         STRING020 = STRING020 + Chr(Mid(STRING018, INTEGER006 * 3, 3) - 185)
  96.     Next
  97.     If (STRING020 <> STRING017) BOOLEAN004 = 0
  98.     For INTEGER006 = 1 To Len(STRING019)
  99.         STRING021 = STRING021 + Chr(Mid(STRING019, INTEGER006 * 3, 3) - 606)
  100.     Next
  101.     If (STRING021 <> STRING016) BOOLEAN004 = 0
  102.  
  103.     EndProc
  104.  
  105.     :LABEL001
  106.     STRING017 = "TURBO"
  107.     PROC003()
  108.     PROC001()
  109.     PROC002()
  110.     PROC005()
  111.     End
  112.  
  113. ;------------------------------------------------------------------------------
  114.  
  115.     Procedure PROC002()
  116.  
  117.     If ((Upper(STRING005) == "YES") && (CurSec() < INTEGER003)) Then
  118.         PROC004()
  119.         Goto LABEL002
  120.     Endif
  121.     Print STRING001
  122.     If (Upper((STRING007 == "YES"))) Then
  123.         PROC007()
  124.         Goto LABEL002
  125.     Endif
  126.     Print "  " + STRING002
  127.     While ((STRING004 == "")) STRING004 = Inkey()
  128.     If (Lower(STRING004) == "n") Then
  129.         PROC004()
  130.     Else
  131.         PROC006()
  132.     Endif
  133.     :LABEL002
  134.  
  135.     EndProc
  136.  
  137.  
  138. ;------------------------------------------------------------------------------
  139.  
  140.     Procedure PROC007()
  141.  
  142.     INTEGER004 = GetY()
  143.     INTEGER005 = GetX()
  144.     STRING014 = " " + STRING009 + STRING012 + STRING010 + " " + STRING011 + " " + STRING013
  145.     STRING015 = " " + STRING010 + STRING012 + " " + STRING011 + " " + STRING009 + STRING013
  146.     STRING008 = STRING014
  147.     BOOLEAN003 = 1
  148.     KbdFlush
  149.     :LABEL003
  150.     STRING004 = ""
  151.     AnsiPos INTEGER005, INTEGER004
  152.     Print STRING008
  153.     While ((STRING004 == "")) STRING004 = Inkey()
  154.     If (Asc(STRING004) == 13) Then
  155.         Goto LABEL005
  156.     ElseIf ((STRING004 == "RIGHT") || (STRING004 == "LEFT")) Then
  157.         If ((BOOLEAN003 == 1) && (STRING004 == "RIGHT")) Then
  158.             STRING008 = STRING015
  159.             BOOLEAN003 = 0
  160.             Goto LABEL004
  161.         Endif
  162.         If ((BOOLEAN003 == 0) && (STRING004 == "LEFT")) Then
  163.             STRING008 = STRING014
  164.             BOOLEAN003 = 1
  165.         Endif
  166.     Endif
  167.     :LABEL004
  168.     Goto LABEL003
  169.     :LABEL005
  170.     If (BOOLEAN003) Then
  171.         PROC006()
  172.     Else
  173.         PROC004()
  174.     Endif
  175.  
  176.     EndProc
  177.  
  178.  
  179. ;------------------------------------------------------------------------------
  180.  
  181.     Procedure PROC003()
  182.  
  183.     FOpen 1, PPEPath() + PPEName() + ".CNF", 0, 0
  184.     FGet 1, STRING016
  185.     STRING016 = Upper(STRING016)
  186.     If (STRING016 <> ReadLine(PCBDat(), 2)) Then
  187.         PrintLn "@X8C SYSOPNAME WRONG@X07 "
  188.         End
  189.     Endif
  190.     FGet 1, STRING001
  191.     FGet 1, STRING002
  192.     FGet 1, STRING005
  193.     FGet 1, INTEGER003
  194.     FGet 1, STRING007
  195.     FGet 1, STRING009
  196.     FGet 1, STRING010
  197.     FGet 1, STRING011
  198.     FGet 1, STRING012
  199.     FGet 1, STRING013
  200.     FGet 1, INTEGER001
  201.     If (INTEGER001 == 0) Goto LABEL006
  202.     For INTEGER002 = 1 To INTEGER001
  203.         FGet 1, STRING006
  204.         Tokenize STRING006
  205.         TBOOLEAN001(INTEGER002) = 0
  206.         TBOOLEAN002(INTEGER002) = 0
  207.         If (GetToken() == "F") TBOOLEAN001(INTEGER002) = 1
  208.         TSTRING003(INTEGER002) = GetToken()
  209.         If (InStr(TSTRING003(INTEGER002), "\") > 0) TBOOLEAN002(INTEGER002) = 1
  210.     Next
  211.     :LABEL006
  212.     FClose 1
  213.  
  214.     EndProc
  215.  
  216.  
  217. ;------------------------------------------------------------------------------
  218.  
  219.     Procedure PROC004()
  220.  
  221.     Print "@X0B"
  222.     If (INTEGER001 == 0) Goto LABEL008
  223.     For INTEGER002 = 1 To INTEGER001
  224.         If (TBOOLEAN002(INTEGER002) == 1) Goto LABEL007
  225.         Call PPEPath() + TSTRING003(INTEGER002)
  226.         Continue
  227.         :LABEL007
  228.         Call TSTRING003(INTEGER002)
  229.     Next
  230.     :LABEL008
  231.  
  232.     EndProc
  233.  
  234.  
  235. ;------------------------------------------------------------------------------
  236.  
  237.     Procedure PROC006()
  238.  
  239.     If (INTEGER001 == 0) Goto LABEL010
  240.     For INTEGER002 = 1 To INTEGER001
  241.         If (TBOOLEAN001(INTEGER002)) Then
  242.             If (TBOOLEAN002(INTEGER002) == 1) Goto LABEL009
  243.             Call PPEPath() + TSTRING003(INTEGER002)
  244.             Continue
  245.             :LABEL009
  246.             Call TSTRING003(INTEGER002)
  247.         Endif
  248.     Next
  249.     :LABEL010
  250.  
  251.     EndProc
  252.  
  253.  
  254. ;------------------------------------------------------------------------------
  255.  
  256.     Procedure PROC005()
  257.  
  258.     Cls
  259.     AnsiPos 1, 1
  260.     PrintLn "@X09T@X0FuRBo @X09L@X0FoG@X0Di@X0F@X0FN v 1.0                "
  261.     PrintLn "@X09C@X0FoDeD @X09B@X0FY @X09A@X0FbDo / @X09L@X0Di@X0FQU@X0Di@X0FD  @X09I@X0FN 1995"
  262.     If (BOOLEAN004 == 0) Then
  263.         AnsiPos 30, 12
  264.         Print "       @X08         E R E @X07D"
  265.         Delay 2
  266.         AnsiPos 30, 12
  267.         Print "       @X08       T E R @X07E @X0FD"
  268.         Delay 2
  269.         AnsiPos 30, 12
  270.         Print "       @X08     S T E @X07R@X0F E @X0BD"
  271.         Delay 2
  272.         AnsiPos 30, 12
  273.         Print "       @X08   I S T @X07E @X0FR @X0BE @X0FD"
  274.         Delay 2
  275.         AnsiPos 30, 12
  276.         Print "       @X08 G I S @X07T @X0FE @X0BR @X0FE @X07D"
  277.         Delay 2
  278.         AnsiPos 30, 12
  279.         Print "  @X08    E G I@X07 S @X0FT @X0BE @X0FR @X07E @X08D"
  280.         Delay 2
  281.         AnsiPos 30, 12
  282.         Print "  @X08  R E G @X07I @X0FS @X0BT @X0FE @X07R @X08E D"
  283.         Delay 2
  284.         AnsiPos 30, 12
  285.         Print "@X08  N R E@X07 G@X0F I@X0B S@X0F T@X07 E@X0F @X08R E D"
  286.         Delay 2
  287.         AnsiPos 30, 12
  288.         Print "@X08U N R@X07 E@X0F G@X0B I@X0F S@X07 T @X08E R E D"
  289.         Delay 2
  290.         AnsiPos 30, 12
  291.         Print "@X08U N @X07R@X0F E@X0B G@X0F I@X07 @X07S @X08T E R E D"
  292.         Delay 2
  293.         AnsiPos 30, 12
  294.         Print "@X08U @X07N @X0FR @X0BE @X0FG@X07 I @X08S T E R E D"
  295.         Delay 2
  296.         AnsiPos 30, 12
  297.         Print "@X07U @X0FN @X0BR @X0FE @X07G @X08I S T E R E D"
  298.         Delay 2
  299.         AnsiPos 30, 12
  300.         Print "@X08U @X07N @X0FR @X0BE @X0FG@X07 I @X08S T E R E D"
  301.         Delay 1
  302.         AnsiPos 30, 12
  303.         Print "@X08U N @X07R@X0F E@X0B G@X0F I@X07 @X07S @X08T E R E D"
  304.         Delay 1
  305.         AnsiPos 30, 12
  306.         Print "@X08U N R@X07 E@X0F G@X0B I@X0F S@X07 T @X08E R E D"
  307.         Delay 1
  308.         AnsiPos 30, 12
  309.         Print "@X08U N R E@X07 G@X0F I@X0B S@X0F T@X07 E@X0F @X08R E D"
  310.         Delay 1
  311.         AnsiPos 30, 12
  312.         Print "@X08U N R E G @X07I @X0FS @X0BT @X0FE @X07R @X08E D"
  313.         Delay 1
  314.         AnsiPos 30, 12
  315.         Print "@X08U N R E G I@X07 S @X0FT @X0BE @X0FR @X07E @X08D"
  316.         Delay 1
  317.         AnsiPos 30, 12
  318.         Print "@X08U N R E G I S @X07T @X0FE @X0BR @X0FE @X07D"
  319.         Delay 1
  320.         AnsiPos 30, 12
  321.         Print "@X08U N R E G I S T @X07E @X0FR @X0BE @X0FD"
  322.         Delay 1
  323.         AnsiPos 30, 12
  324.         Print "@X08U N R E G I S T E @X07R@X0F E @X0BD"
  325.         Delay 1
  326.         AnsiPos 30, 12
  327.         Print "@X08U N R E G I S T E R @X07E @X0FD"
  328.         Delay 1
  329.         AnsiPos 30, 12
  330.         Print "@X08U N R E G I S T E R E @X07D"
  331.         Delay 1
  332.         AnsiPos 30, 12
  333.         Print "@X08U N R E G I S T E R E D"
  334.         Delay 1
  335.     Else
  336.         AnsiPos 1, 1
  337.         PrintLn "@X09T@X0FuRBo @X09L@X0FoG@X0Di@X0F@X0FN v 1.0                         @X09R@X0FeG@X0Di@X0FSTeReD @X09T@X0Fo " + STRING016
  338.         PrintLn "@X09C@X0FoDeD @X09B@X0FY @X09A@X0FbDo / @X09L@X0Di@X0FQU@X0Di@X0FD  @X09I@X0FN 1995"
  339.         Delay 2
  340.     Endif
  341.  
  342.     EndProc
  343.  
  344.  
  345. ;------------------------------------------------------------------------------
  346. ;
  347. ; Usage report (before postprocessing)
  348. ;
  349. ; ■ Statements used :
  350. ;
  351. ;    3       End
  352. ;    1       Cls
  353. ;    41      Goto 
  354. ;    39      Let 
  355. ;    28      Print 
  356. ;    5       PrintLn 
  357. ;    28      If 
  358. ;    2       FOpen 
  359. ;    2       FClose 
  360. ;    18      FGet 
  361. ;    25      Delay 
  362. ;    2       Tokenize 
  363. ;    4       Call 
  364. ;    27      AnsiPos 
  365. ;    1       KbdFlush
  366. ;    7       EndProc
  367. ;
  368. ;
  369. ; ■ Functions used :
  370. ;
  371. ;    2       *
  372. ;    31      +
  373. ;    2       -
  374. ;    19      ==
  375. ;    3       <>
  376. ;    6       <
  377. ;    5       <=
  378. ;    2       >
  379. ;    10      >=
  380. ;    22      !
  381. ;    13      &&
  382. ;    6       ||
  383. ;    4       Len(
  384. ;    1       Lower()
  385. ;    3       Upper()
  386. ;    2       Mid()
  387. ;    2       Left()
  388. ;    2       Chr()
  389. ;    1       Asc()
  390. ;    1       InStr()
  391. ;    2       Inkey()
  392. ;    1       PCBDat()
  393. ;    4       PPEPath()
  394. ;    1       ReadLine()
  395. ;    1       CurSec()
  396. ;    4       GetToken()
  397. ;    1       GetX()
  398. ;    1       GetY()
  399. ;    1       PPEName()
  400. ;    1       TokCount()
  401. ;
  402. ;------------------------------------------------------------------------------
  403. ;
  404. ; Analysis flags : Cd
  405. ;
  406. ; C - Call child PPE ■ 3
  407. ;     This is usually normal, but may be a tricky way to launch some
  408. ;     sysop-only commands.
  409. ;     ■ Search for : CALL
  410. ;
  411. ; d - Access PCBOARD.DAT ■ 2
  412. ;     Program gets the full pathname to PCBOARD.DAT, this may be usefull
  413. ;     for many PPE so they can find various informations on the system
  414. ;     (system paths, max number of lines in messages, ...) but it may also
  415. ;     be a way to gather vital informations.
  416. ;     ■ Search for : PCBDAT()
  417. ;
  418. ;------------------------------------------------------------------------------
  419. ;
  420. ; Postprocessing report
  421. ;
  422. ;    5       For/Next
  423. ;    0       While/EndWhile
  424. ;    12      If/Then or If/Then/Else
  425. ;    0       Select Case
  426. ;
  427. ;------------------------------------------------------------------------------
  428. ;                 AEGiS Corp - Break the routines, code against the machines!
  429. ;------------------------------------------------------------------------------
  430.