home *** CD-ROM | disk | FTP | other *** search
/ Groovy Bytes: Behind the Moon / groovybytes.iso / GROOVY / PPE / LIQUID / LEDIT10.ZIP / LEDIT.PPE (.txt) < prev    next >
Encoding:
PCBoard Programming Language Executable  |  1995-02-25  |  9.8 KB  |  417 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.     Integer  INTEGER001
  21.     Integer  INTEGER002
  22.     Integer  INTEGER003
  23.     Integer  INTEGER004
  24.     Integer  INTEGER008
  25.     Integer  INTEGER009
  26.     Integer  INTEGER010
  27.     String   STRING001
  28.     String   STRING002
  29.     String   TSTRING003(200)
  30.     String   STRING004
  31.     String   STRING005
  32.     String   STRING006
  33.     String   STRING007
  34.     String   STRING008
  35.     String   STRING009
  36.     String   STRING010
  37.     String   STRING011
  38.     String   STRING012
  39.     String   STRING013
  40.     String   STRING015
  41.     Declare  Procedure PROC001(Integer INTEGER005, Integer INTEGER006, Integer INTEGER007, Var String STRING014)
  42.  
  43. ;------------------------------------------------------------------------------
  44.  
  45.     BOOLEAN001 = 0
  46.     If (Exist(PPEPath() + "LEDIT.KEY")) Then
  47.         FOpen 1, PPEPath() + "LEDIT.KEY", 0, 1
  48.         FGet 1, STRING001
  49.         If (STRING001 <> "This is your a Key 4 LIQUID EDIT") Goto LABEL001
  50.         FGet 1, STRING001
  51.         If (Crc32(0, STRING001) <> 2.50869e+09) Goto LABEL001
  52.         FGet 1, STRING001
  53.         FGet 1, STRING002
  54.         If (Abs((Crc32(0, STRING001) * 4 - 15) / 2) <> STRING002) Goto LABEL001
  55.         BOOLEAN001 = 1
  56.     Endif
  57.     STRING001 = ""
  58.     Goto LABEL002
  59.     :LABEL001
  60.     PrintLn ""
  61.     PrintLn "Error in Keyfile"
  62.     End
  63.     :LABEL002
  64.     STRING009 = "@X03"
  65.     STRING010 = "@X0B"
  66.     STRING011 = "@X09"
  67.     STRING012 = "@X02"
  68.     STRING013 = "@X0E"
  69.     Gosub LABEL010
  70.     STRING008 = ""
  71.     PROC001(35, 12, 24, STRING008)
  72.     STRING008 = Upper(STRING008)
  73.     STRING005 = STRING008
  74.     If (Upper(STRING005) == "SYSOP") STRING008 = Upper(ReadLine(PCBDat(), 2))
  75.     If (Len(STRING008) == 0) Then
  76.         STRING008 = "ALL"
  77.         Print "@X0BALL"
  78.         STRING005 = "ALL"
  79.     Endif
  80.     If ((STRING008 <> "ALL") && (U_RecNum(STRING008) == -1)) Then
  81.         Cls
  82.         Print "@X0BU@X03ser not found@X02"
  83.         Delay 2
  84.         End
  85.     Endif
  86.     STRING008 = ""
  87.     PROC001(35, 13, 24, STRING008)
  88.     STRING006 = STRING008
  89.     If (STRING008 == "") Then
  90.         Cls
  91.         Print "@X0BM@X03essage aborted@X02."
  92.         Delay 2
  93.         End
  94.     Endif
  95.     AnsiPos 51, 14
  96.     STRING008 = ""
  97.     STRING007 = "N"
  98.     If (STRING005 <> "ALL") Then
  99.         InputYN "", STRING008, 9
  100.         If (STRING008 == "Y") STRING007 = "R"
  101.     Endif
  102.     For INTEGER003 = 1 To 200
  103.         TSTRING003(INTEGER003) = "               "
  104.     Next
  105.     Gosub LABEL011
  106.     AnsiPos 9, 2
  107.     Print "@X1F" + STRING005
  108.     AnsiPos 9, 3
  109.     Print "@X1F" + STRING006
  110.     INTEGER003 = 0
  111.     Print "@X0E"
  112.     AnsiPos 2, 5
  113.     While (STRING004 <> Chr(19)) Do
  114.         If (GetX() < 2) AnsiPos 2, GetY()
  115.         STRING004 = ""
  116.         While (STRING004 == "") Do
  117.             STRING004 = Inkey()
  118.         EndWhile
  119.         If (GetX() > 78) Then
  120.             AnsiPos 2, GetY() + 1
  121.         Endif
  122.         If (STRING004 == "UP") AnsiPos GetX() , GetY() - 1
  123.         If (STRING004 == "DOWN") AnsiPos GetX() , GetY() + 1
  124.         If (STRING004 == "LEFT") AnsiPos GetX() - 1, GetY()
  125.         If (STRING004 == "RIGHT") AnsiPos GetX() + 1, GetY()
  126.         If (STRING004 == "HOME") AnsiPos 2, GetY()
  127.         If (STRING004 == "END") AnsiPos 78, GetY()
  128.         If (GetX() > 78) Then
  129.             AnsiPos 2, GetY() + 1
  130.         Endif
  131.         If (GetX() < 2) Then
  132.             AnsiPos 78, GetY() - 1
  133.         Endif
  134.         If (GetY() < 5) Then
  135.             INTEGER001 = GetX() - 1
  136.             If (INTEGER003 > 0) Then
  137.                 INTEGER003 = INTEGER003 - 1
  138.                 For INTEGER004 = 5 To 22
  139.                     If (TSTRING003(INTEGER004 - 4 + INTEGER003) <> TSTRING003(INTEGER004 - 3 + INTEGER003)) Then
  140.                         AnsiPos 2, INTEGER004
  141.                         Print Left(TSTRING003(INTEGER004 - 4 + INTEGER003), 77)
  142.                     Endif
  143.                 Next
  144.             Endif
  145.             AnsiPos INTEGER001 + 1, 5
  146.         Endif
  147.         If (GetY() > 22) Then
  148.             INTEGER001 = GetX() - 1
  149.             If (INTEGER003 + 19 < 100) Then
  150.                 INTEGER003 = INTEGER003 + 1
  151.                 For INTEGER004 = 5 To 22
  152.                     If (TSTRING003(INTEGER004 - 4 + INTEGER003) <> TSTRING003(INTEGER004 - 5 + INTEGER003)) Then
  153.                         AnsiPos 2, INTEGER004
  154.                         Print Left(TSTRING003(INTEGER004 - 4 + INTEGER003), 77)
  155.                     Endif
  156.                 Next
  157.             Endif
  158.             AnsiPos INTEGER001 + 1, 22
  159.         Endif
  160.         If (STRING004 == Chr(13)) Then
  161.             AnsiPos 2, GetY() + 1
  162.         Endif
  163.         If ((STRING004 == Chr(8)) && (GetX() > 2)) Then
  164.             INTEGER001 = GetX() - 1
  165.             INTEGER002 = GetY() + INTEGER003
  166.             Print Chr(8) + " " + Chr(8)
  167.             TSTRING003(INTEGER002 - 4) = Left(TSTRING003(INTEGER002 - 4), INTEGER001 - 2) + " " + Mid(TSTRING003(INTEGER002 - 4), INTEGER001, Len(TSTRING003(INTEGER002 - 4)) - 1)
  168.         Endif
  169.         If (GetX() < 2) AnsiPos 2, GetY()
  170.         Gosub LABEL003
  171.         INTEGER001 = GetX() - 1
  172.         INTEGER002 = GetY() + INTEGER003
  173.         If (((STRING004 <> "") && (STRING004 <> Chr(19))) && (STRING004 <> Chr(1))) Then
  174.             Print STRING004
  175.             INTEGER001 = GetX() - 1
  176.             INTEGER002 = GetY() + INTEGER003
  177.             TSTRING003(INTEGER002 - 4) = Left(TSTRING003(INTEGER002 - 4), INTEGER001 - 2) + STRING004 + Mid(TSTRING003(INTEGER002 - 4), INTEGER001, Len(TSTRING003(INTEGER002 - 4)) - 1)
  178.         Endif
  179.         If (Asc(STRING004) == 1) End
  180.     EndWhile
  181.     Goto LABEL004
  182.     :LABEL003
  183.     If (STRING004 == Chr(13)) STRING004 = ""
  184.     If (STRING004 == Chr(8)) STRING004 = ""
  185.     If (STRING004 == Chr(9)) STRING004 = ""
  186.     If (STRING004 == Chr(10)) STRING004 = ""
  187.     If (STRING004 == Chr(7)) STRING004 = ""
  188.     If (STRING004 == Chr(11)) STRING004 = ""
  189.     If (Len(STRING004) > 1) STRING004 = ""
  190.     Return
  191.     :LABEL004
  192.     INTEGER001 = 1
  193.     For INTEGER003 = 1 To 100
  194.         If (TSTRING003(INTEGER003) <> "               ") INTEGER001 = INTEGER003
  195.     Next
  196.     FCreate 1, "C:\MSG.TMP", 1, 3
  197.     For INTEGER003 = 1 To INTEGER001
  198.         FPutLn 1, TSTRING003(INTEGER003)
  199.     Next
  200.     FClose 1
  201.     Message CurConf(), STRING005, U_Name(), STRING006, STRING007, Date(), 0, 0, "C:\MSG.TMP"
  202.     End
  203.  
  204. ;------------------------------------------------------------------------------
  205.  
  206.     Procedure PROC001(Integer INTEGER005, Integer INTEGER006, Integer INTEGER007, Var String STRING014)
  207.  
  208.     Integer  INTEGER008
  209.     Integer  INTEGER009
  210.     Integer  INTEGER010
  211.     String   STRING015
  212.  
  213.     AnsiPos INTEGER005, INTEGER006
  214.     INTEGER008 = INTEGER005 + INTEGER007
  215.     Print "@X07"
  216.     For INTEGER009 = 1 To INTEGER007
  217.         Print "·"
  218.     Next
  219.     AnsiPos INTEGER005, INTEGER006
  220.     STRING014 = ""
  221.     :LABEL005
  222.     STRING015 = ""
  223.     While (STRING015 == "") Do
  224.         STRING015 = Inkey()
  225.     EndWhile
  226.     If (STRING014 == "") STRING015 = Upper(STRING015)
  227.     If (Right(STRING014, 1) == " ") STRING015 = Upper(STRING015)
  228.     Gosub LABEL007
  229.     If (((STRING015 <> Chr(8)) && (GetX() < INTEGER008)) && (STRING015 <> Chr(13))) STRING014 = STRING014 + STRING015
  230.     If (((STRING015 <> Chr(13)) && (STRING015 <> Chr(8))) && (GetX() < INTEGER008)) Then
  231.         Gosub LABEL008
  232.     Endif
  233.     If ((STRING015 == Chr(8)) && (GetX() > INTEGER005)) Gosub LABEL006
  234.     If (STRING015 == Chr(13)) Goto LABEL009
  235.     Goto LABEL005
  236.     :LABEL006
  237.     STRING014 = Left(STRING014, Len(STRING014) - 1)
  238.     Print Chr(8)
  239.     Print "@X07·"
  240.     Print Chr(8)
  241.     Return
  242.     :LABEL007
  243.     If (STRING015 == Chr(9)) STRING015 = ""
  244.     If (STRING015 == Chr(10)) STRING015 = ""
  245.     If (STRING015 == Chr(7)) STRING015 = ""
  246.     If (STRING015 == Chr(11)) STRING015 = ""
  247.     If (STRING015 == "LEFT") STRING015 = ""
  248.     If (STRING015 == "BADKEY") STRING015 = ""
  249.     If (STRING015 == "RIGHT") STRING015 = ""
  250.     If (STRING015 == "HOME") STRING015 = ""
  251.     If (STRING015 == "UP") STRING015 = ""
  252.     If (STRING015 == "DEL") STRING015 = ""
  253.     If (STRING015 == "END") STRING015 = ""
  254.     If (STRING015 == "PGDN") STRING015 = ""
  255.     If (STRING015 == "PGUP") STRING015 = ""
  256.     If (STRING015 == "INS") STRING015 = ""
  257.     If (STRING015 == "DOWN") STRING015 = ""
  258.     Return
  259.     :LABEL008
  260.     INTEGER010 = Asc(STRING015)
  261.     If (INTEGER010 < 48) Print STRING012 + STRING015
  262.     If ((INTEGER010 < 65) && (INTEGER010 > 57)) Print STRING012 + STRING015
  263.     If ((INTEGER010 > 47) && (INTEGER010 < 58)) Print STRING011 + STRING015
  264.     If ((INTEGER010 > 64) && (INTEGER010 < 91)) Print STRING010 + STRING015
  265.     If ((INTEGER010 > 96) && (INTEGER010 < 123)) Print STRING009 + STRING015
  266.     If (INTEGER010 > 128) Print STRING013 + STRING015
  267.     Return
  268.     :LABEL009
  269.     STRING008 = STRING014
  270.  
  271.     EndProc
  272.  
  273.     :LABEL010
  274.     PrintLn "@POFF@@CLS@CWrite a"
  275.     PrintLn "    █▀▀▀░▀▀▀▀▀▀█ █▀▀▀░▀▀▀█ █▀▀▀░▀▀▀█ █▀▀▀░▀▀▀█ █▀▀▀░▀▀▀█ █▀▀▀░▀▀▀█ █▀▀▀░▀▀▀█"
  276.     PrintLn "    █   ░     ░ █   ░ ▄▄█ █   ░ ▄▄█ █   ░ ▄▄█ █   ░   ░ █   ░ "
  277.     PrintLn "AC▄▄█ █   ░ ▄▄█"
  278.     PrintLn "    ▓   ▒   ░ ▒ ▓   ▒     ▓   ▒     ▓   ▒     ▓   ▒ ░ ▒ ▓   ▒     ▓   ▒"
  279.     PrintLn "    ▒   ▒   ▒ ▒ ▒   ▒▄▄   ▀▀▀▀▀▀▀▀▓ ▀▀▀▀▀▀▀▀▓ ▒   ▒ ▒ ▒ ▒   ▒ ▀▀█ ▒   ▒▄▄"
  280.     PrintLn "    ▒   ▓    ░ ▓ ▒   ▓     ▒   ▓   ▒ ▒   ▓   ▒ ▒   ▓░ ▓ ▒   ▓   ░ ▒   "
  281.     PrintLn "AC▓"
  282.     PrintLn "    ░   ▓    ▒ ▓ ░   ▓ ▀▀█ ░   ▓   ░ ░   ▓   ░ ░   ▓ ▒ ▓ ░   ▓   ▒"
  283.     PrintLn "AC ░   ▓ ▀▀█"
  284.     PrintLn "    ░▄▄▄█    ▄▄█ ░▄▄▄█▄▄▄█ ░▄▄▄█▄▄▄█ ░▄▄▄█▄▄▄█ ░▄▄▄█ ▄▄█ ░▄▄▄█▄▄▄▓ ░▄▄▄█▄▄▄█"
  285.     PrintLn ""
  286.     PrintLn ""
  287.     PrintLn "C┌───────────────────────────────────────────┐"
  288.     PrintLn "C│ T(Enter=ALL) : ························ │"
  289.     PrintLn "C│ SubjectC························ │"
  290.     PrintLn "C│     Is this message private (Y/N)? ( )    │"
  291.     PrintLn "C└───────────────────────────────────────────┘"
  292.     PrintLn ""
  293.     PrintLn ""
  294.     PrintLn ""
  295.     PrintLn ""
  296.     PrintLn ""
  297.     PrintLn ""
  298.     Print "CLiQUiD Edit 1.0 by S∩b ZΣr()"
  299.     Return
  300.     :LABEL011
  301.     PrintLn "┌─────────────────────────────────────────────────────────────────────────────┐"
  302.     PrintLn "│To   :                                              LiQUiD Edit V1.0         │"
  303.     PrintLn "│Subj :                                     Str+A - Abort  Str+S - Save & Quit│"
  304.     PrintLn "├─────────────────────────────────────────────────────────────────────────────┤"
  305.     PrintLn "│C│"
  306.     PrintLn "│C│"
  307.     PrintLn "│C│"
  308.     PrintLn "│C│"
  309.     PrintLn "│C│"
  310.     PrintLn "│C│"
  311.     PrintLn "│C│"
  312.     PrintLn "│C│"
  313.     PrintLn "│C│"
  314.     PrintLn "│C│"
  315.     PrintLn "│C│"
  316.     PrintLn "│C│"
  317.     PrintLn "│C│"
  318.     PrintLn "│C│"
  319.     PrintLn "│C│"
  320.     PrintLn "│C│"
  321.     PrintLn "│C│"
  322.     PrintLn "│C│"
  323.     Print "└─────────────────────────────────────────────────────────────────────────────┘"
  324.     If (BOOLEAN001 == 0) Then
  325.         AnsiPos 25, 23
  326.         Print "@X8FUNREGISTERED COPY PLEASE REGISTER"
  327.     Endif
  328.     Return
  329.  
  330. ;------------------------------------------------------------------------------
  331. ;
  332. ; Usage report (before postprocessing)
  333. ;
  334. ; ■ Statements used :
  335. ;
  336. ;    5       End
  337. ;    2       Cls
  338. ;    45      Goto 
  339. ;    81      Let 
  340. ;    24      Print 
  341. ;    48      PrintLn 
  342. ;    76      If 
  343. ;    1       FCreate 
  344. ;    1       FOpen 
  345. ;    1       FClose 
  346. ;    4       FGet 
  347. ;    1       FPutLn 
  348. ;    1       InputYN 
  349. ;    6       Gosub 
  350. ;    6       Return
  351. ;    2       Delay 
  352. ;    23      AnsiPos 
  353. ;    1       Message 
  354. ;    1       EndProc
  355. ;
  356. ;
  357. ; ■ Functions used :
  358. ;
  359. ;    1       -
  360. ;    1       *
  361. ;    1       /
  362. ;    42      +
  363. ;    29      -
  364. ;    42      ==
  365. ;    16      <>
  366. ;    18      <
  367. ;    6       <=
  368. ;    12      >
  369. ;    12      >=
  370. ;    28      !
  371. ;    25      &&
  372. ;    6       ||
  373. ;    5       Len(
  374. ;    5       Upper()
  375. ;    2       Mid()
  376. ;    5       Left()
  377. ;    1       Right()
  378. ;    25      Chr()
  379. ;    2       Asc()
  380. ;    1       Date()
  381. ;    1       U_Name()
  382. ;    2       Inkey()
  383. ;    1       CurConf()
  384. ;    1       PCBDat()
  385. ;    2       PPEPath()
  386. ;    1       ReadLine()
  387. ;    1       Exist()
  388. ;    18      GetX()
  389. ;    17      GetY()
  390. ;    1       Abs()
  391. ;    1       U_RecNum()
  392. ;    2       Crc32()
  393. ;
  394. ;------------------------------------------------------------------------------
  395. ;
  396. ; Analysis flags : d
  397. ;
  398. ; d - Access PCBOARD.DAT ■ 2
  399. ;     Program gets the full pathname to PCBOARD.DAT, this may be usefull
  400. ;     for many PPE so they can find various informations on the system
  401. ;     (system paths, max number of lines in messages, ...) but it may also
  402. ;     be a way to gather vital informations.
  403. ;     ■ Search for : PCBDAT()
  404. ;
  405. ;------------------------------------------------------------------------------
  406. ;
  407. ; Postprocessing report
  408. ;
  409. ;    6       For/Next
  410. ;    3       While/EndWhile
  411. ;    19      If/Then or If/Then/Else
  412. ;    0       Select Case
  413. ;
  414. ;------------------------------------------------------------------------------
  415. ;                 AEGiS Corp - Break the routines, code against the machines!
  416. ;------------------------------------------------------------------------------
  417.