home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / PCBOARD / NWSMKR2B.ZIP / NEWSMAKR.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1994-02-17  |  9KB  |  562 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 2.OO (plain) - Analysis ON - Postprocessing ON
  17. ;------------------------------------------------------------------------------
  18.  
  19.     Boolean  BOOLEAN001
  20.     Date     DATE001
  21.     Integer  INTEGER002
  22.     Integer  INTEGER003
  23.     String   STRING001
  24.     String   STRING002
  25.     String   STRING003
  26.     String   STRING004
  27.     String   STRING005
  28.     String   STRING006
  29.     String   STRING007
  30.     String   STRING008
  31.     String   STRING009
  32.     String   STRING010
  33.     String   STRING011
  34.     String   STRING012
  35.     String   STRING013
  36.     String   STRING014
  37.     String   STRING015
  38.     String   STRING016
  39.     String   STRING017
  40.     String   STRING018
  41.     String   STRING019
  42.     String   STRING020
  43.     String   STRING021
  44.     String   STRING022
  45.     String   STRING023
  46.     Byte     BYTE001
  47.     Byte     BYTE002
  48.     Byte     BYTE003
  49.     Byte     BYTE004
  50.     Byte     BYTE005
  51.     Byte     BYTE006
  52.     Byte     BYTE007
  53.     Byte     BYTE008
  54.     Byte     BYTE009
  55.  
  56. ;------------------------------------------------------------------------------
  57.  
  58.     DATE001 = "04-17-94"
  59.     If (Date() >= DATE001) Then
  60.         PrintLn "         @X0FThis PPE has @X0EEXPIRED @X0Fas of @X0C4-17-94@X07"
  61.         End
  62.     Endif
  63.     If (GrafMode() == "A") Then
  64.         PrintLn 
  65.         PrintLn "                Any input you make will not utilize colors"
  66.         PrintLn 
  67.         Print "                     "
  68.         Wait
  69.     Endif
  70.     If (AnsiOn()) Goto LABEL001
  71.     DispFile PPEPath() + "newsmakr.asc", 4
  72.     End
  73.     :LABEL001
  74.     If (OnLocal()) Goto LABEL002
  75.     Cls
  76.     Newlines 2
  77.     PrintLn "                               @X0BNEWSMAKR.PPE@X07"
  78.     PrintLn 
  79.     PrintLn "   @X0FPlease make sure that you are in @X0Edoorway mode @X0Ffor @X0Bcorrect @X0Acursor @X0Dmovement@X07"
  80.     PrintLn 
  81.     Print "                       "
  82.     Wait
  83.     :LABEL002
  84.     STRING008 = Chr(77)
  85.     STRING009 = Chr(75)
  86.     STRING010 = Chr(72)
  87.     STRING011 = Chr(80)
  88.     STRING020 = Chr(79)
  89.     STRING019 = Chr(71)
  90.     STRING018 = Chr(81)
  91.     STRING017 = Chr(73)
  92.     STRING015 = Chr(8)
  93.     STRING016 = Chr(82)
  94.     BYTE002 = "0"
  95.     STRING004 = Chr(8)
  96.     STRING005 = Chr(127)
  97.     STRING006 = Chr(13)
  98.     STRING007 = Chr(27)
  99.     BYTE001 = 0
  100.     STRING001 = ""
  101.     STRING013 = ReadLine(PCBDat(), 31)
  102.     STRING012 = 1
  103.     GetUser
  104.     STRING021 = ReadLine(STRING013, 13 + 33 * CurConf())
  105.     INTEGER002 = U_PageLen
  106.     U_PageLen = "0"
  107.     PutUser
  108.     :LABEL003
  109.     If (OnLocal()) Cls
  110.     Newlines 2
  111.     PrintLn "                           @X0D Newsmakr.ppe v2.0@X07" + Chr(225)
  112.     PrintLn 
  113.     PrintLn "                             ░▒▓█ @X0BDMSOFT @X0F█▓▒░@X07"
  114.     PrintLn 
  115.     InputStr "    @X0FWould you like to @X0EC@X0Freate, @X0EE@X0Fdit, @X0E@X0EV@X0Fiew, @X0EA@X0Fppend a @X0ANews file @X0F(@X0EQ@X0Fuit)@X07", STRING014, 14, 1, "CcEeAaQqVv", 2 + 8 + 4
  116.     PrintLn 
  117.     Select Case (STRING014)
  118.         Case "C"
  119.             STRING014 = "N"
  120.             STRING022 = "C"
  121.             If (Exist(STRING021)) Then
  122.                 InputStr "         @X0BNews @X0Ffile already exists - overwrite it @X0F(@X0EY@X0F/@X0EN@X0F)@X07", STRING014, 14, 1, "YyNn", 2 + 4 + 8 + 256
  123.                 If (STRING014 == "N") End
  124.                 Gosub LABEL014
  125.             Endif
  126.         Case "E"
  127.             STRING022 = "E"
  128.         Case "A"
  129.             PrintLn 
  130.             PrintLn "                       @X0FThis function @X0Cnot @X0Foperable yet@X07"
  131.             PrintLn 
  132.             Print "                         "
  133.             Wait
  134.             Goto LABEL003
  135.             STRING022 = "A"
  136.         Case "V"
  137.             PrintLn " got to V "
  138.             If (Exist(STRING021)) Then
  139.                 DispFile STRING021, ""
  140.             Else
  141.                 If (Exist(STRING021)) Goto LABEL004
  142.                 PrintLn 
  143.                 PrintLn "    @X0FThe file -@X0C " + STRING021 + "@X0F does not exist on the disk"
  144.                 PrintLn "    Check your path - if thats right then @X0EC@X0Freate a new file.@X07"
  145.                 Wait
  146.             Endif
  147.             :LABEL004
  148.             Goto LABEL003
  149.         Case "Q"
  150.             End
  151.         Case Else
  152.             Goto LABEL003
  153.     End Select
  154.     Cls
  155.     STRING003 = STRING003
  156.     STRING003 = Mixed(STRING003)
  157.     If (GrafMode() == "G") Then
  158.         STRING023 = "Color"
  159.     Endif
  160.     PrintLn "                             @X0C-@X0B=@X0A≡@X0ENewsMakr v1.2@X0A≡@X0B=@X0C-@X07  @POS:72@" + STRING023
  161.     PrintLn "@X0F╒═════════════════════════════╤═══════════════╤═══════════════╤═════════════╕"
  162.     PrintLn "@X0F│  @X0BEnter your @X0Enews file @X0Bbelow @X0F│ @X0F(@X0E@X0F@X0ECTRL S)@X0B Save@X0F │ @X0F(@X0EESC@X0F) @X0Bto EXIT @X0F│ @X0F(@X0EF10@X0F) @X0BHelp  @X0F│@X07"
  163.     PrintLn "@X0F│@X09─@X0B=@X07≡@X0E Current Conference: @X0F" + String(CurConf()) + "@X07≡@X0B=@X09-@X0F@POS:31@│@X07 file=> " + STRING021 + "@X0F@POS:63@│@POS:77@│@X07"
  164.     PrintLn "≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈≈@X0F"
  165.     STRING023 = ""
  166.     Gosub LABEL014
  167.     Select Case (STRING022)
  168.         Case "C"
  169.             AnsiPos 1, 6
  170.         Case "E"
  171.             AnsiPos STRING012 + 1, 10
  172.         Case "A"
  173.             AnsiPos 1, 1
  174.             Print "Edit"
  175.             AnsiPos 1, 6
  176.     End Select
  177.     :LABEL005
  178.     If (BOOLEAN001) Goto LABEL013
  179.     INTEGER003 = GetY()
  180.     STRING002 = Inkey()
  181.     If (STRING002 <> "") Then
  182.         BYTE008 = GetY()
  183.         BYTE009 = GetX()
  184.         BYTE005 = GetX()
  185.         BYTE003 = GetY()
  186.         AnsiPos 18, 1
  187.         Print BYTE009, " ", ",", BYTE008, " "
  188.         AnsiPos BYTE005, BYTE003
  189.         If (STRING002 == STRING007) Then
  190.             U_PageLen = INTEGER002
  191.             PutUser
  192.             Cls
  193.             BOOLEAN001 = 1
  194.             Goto LABEL011
  195.         Endif
  196.         If (STRING002 == Chr(19)) Then
  197.             Print STRING004 + STRING004 + STRING004 + STRING004
  198.             FOpen 1, STRING021, 2, 0
  199.             AnsiPos 1, 1
  200.             STRING014 = "Y"
  201.             InputStr "@X0FSave file (@X0EY/N/Abort) @X07", STRING014, 14, 1, "YyNnAa", 2 + 4 + 8 + 256
  202.             If (STRING014 == "N") Then
  203.                 U_PageLen = INTEGER002
  204.                 PutUser
  205.                 Cls
  206.                 End
  207.                 Goto LABEL007
  208.             Endif
  209.             If (STRING014 == "A") Then
  210.                 STRING014 = "Y"
  211.                 AnsiPos 1, 1
  212.                 PrintLn "                           "
  213.                 AnsiPos 1, 1
  214.                 InputStr " @X0BAbort, are you sure@X07 ", STRING014, 14, 1, "YyNn", 2 + 4 + 8 + 256
  215.                 If (STRING014 == "Y") Then
  216.                     U_PageLen = INTEGER002
  217.                     PutUser
  218.                     Cls
  219.                     End
  220.                     Goto LABEL006
  221.                 Endif
  222.                 If (STRING014 == "N") Then
  223.                     U_PageLen = INTEGER002
  224.                     PutUser
  225.                 Endif
  226.                 :LABEL006
  227.                 Goto LABEL007
  228.                 Goto LABEL007
  229.             Endif
  230.             If (STRING022 == "E") Then
  231.                 Rename STRING021, STRING021 + ".old"
  232.             Endif
  233.             :LABEL007
  234.             STRING012 = 6
  235.             For STRING012 = 6 To 21
  236.                 STRING001 = ScrText(1, STRING012, 70, 1)
  237.                 AnsiPos 1, STRING012 + 1
  238.                 If (INTEGER003 == STRING012) Break
  239.                 FPutLn 1, STRING001
  240.             Next
  241.             STRING001 = ""
  242.             FPutLn 1, STRING006
  243.             FClose 1
  244.             If (STRING022 == "A") Then
  245.                 PrintLn STRING021 + ".tmp"
  246.                 Delete STRING021 + "tmp"
  247.                 Append STRING021, STRING021 + ".tmp"
  248.                 End
  249.                 Delete STRING021 + ".tmp"
  250.             Endif
  251.             DefColor
  252.             Cls
  253.             BOOLEAN001 = 1
  254.             Goto LABEL011
  255.         Endif
  256.         If (STRING002 == "F10") Then
  257.             BYTE004 = GetY()
  258.             BYTE007 = GetX()
  259.             AnsiPos 23, 79
  260.             SaveScrn
  261.             Newline
  262.             Cls
  263.             If (!OnLocal()) DispFile PPEPath() + "newsmakr.hlp", 1 + 4
  264.             If (OnLocal()) DispFile PPEPath() + "newsmkrl.hlp", 1 + 4
  265.             Newline
  266.             Wait
  267.             RestScrn
  268.             AnsiPos BYTE007, BYTE004
  269.             Goto LABEL012
  270.             Goto LABEL011
  271.         Endif
  272.         If (STRING002 == "PGUP") Then
  273.             BYTE005 = GetX()
  274.             BYTE003 = GetY()
  275.             AnsiPos 1, 6
  276.             Goto LABEL011
  277.         Endif
  278.         If (STRING002 == "PGDN") Then
  279.             AnsiPos 1, 23
  280.             Goto LABEL011
  281.         Endif
  282.         If (STRING002 == "CTRL PGUP") Then
  283.             BYTE005 = GetX()
  284.             BYTE003 = GetY()
  285.             BYTE006 = BYTE006 + 1
  286.             Color BYTE006
  287.             AnsiPos 72, 1
  288.             Print "Color"
  289.             AnsiPos BYTE005, BYTE003
  290.             Goto LABEL011
  291.         Endif
  292.         If (STRING002 == "CTRL PGDN") Then
  293.             BYTE005 = GetX()
  294.             BYTE003 = GetY()
  295.             BYTE006 = BYTE006 - 1
  296.             Color BYTE006
  297.             AnsiPos 72, 1
  298.             Print "Color"
  299.             AnsiPos BYTE005, BYTE003
  300.             Goto LABEL011
  301.         Endif
  302.         If (STRING002 == "END") Then
  303.             BYTE005 = GetX()
  304.             BYTE003 = GetY()
  305.             AnsiPos 65, BYTE003
  306.             Goto LABEL011
  307.         Endif
  308.         If (STRING002 == "HOME") Then
  309.             BYTE005 = GetX()
  310.             BYTE003 = GetY()
  311.             AnsiPos 1, BYTE003
  312.             Goto LABEL011
  313.         Endif
  314.         If (STRING002 == STRING006) Then
  315.             PrintLn 
  316.             ClrEol
  317.             Goto LABEL011
  318.         Endif
  319.         If (STRING002 == "DEL") Then
  320.             BYTE007 = GetX()
  321.             Print " "
  322.             BYTE007 = BYTE007 - 1
  323.             BYTE003 = GetY()
  324.             AnsiPos BYTE007, BYTE003
  325.             BYTE001 = BYTE001 - 1
  326.             STRING001 = Left(STRING001, BYTE001)
  327.             Goto LABEL011
  328.         Endif
  329.         If (STRING002 == "BS") Then
  330.             If (BYTE001 > 0) Then
  331.                 Print STRING004 + " "
  332.                 BYTE007 = GetX()
  333.                 BYTE007 = BYTE007 - 1
  334.                 BYTE003 = GetY()
  335.                 AnsiPos BYTE007, BYTE003
  336.                 BYTE001 = BYTE001 - 1
  337.                 STRING001 = Left(STRING001, BYTE001)
  338.             Endif
  339.             Goto LABEL011
  340.         Endif
  341.         If ((STRING002 == STRING004) || (STRING002 == STRING005)) Then
  342.             If (BYTE001 > 0) Then
  343.                 Print STRING004 + " "
  344.                 BYTE007 = GetX()
  345.                 BYTE007 = BYTE007 - 1
  346.                 BYTE003 = GetY()
  347.                 AnsiPos BYTE007, BYTE003
  348.                 BYTE001 = BYTE001 - 1
  349.                 STRING001 = Left(STRING001, BYTE001)
  350.             Endif
  351.             Goto LABEL011
  352.         Endif
  353.         If (STRING002 == "RIGHT") Then
  354.             BYTE003 = GetY()
  355.             If (BYTE003 >= 65) Then
  356.                 BYTE003 = 65
  357.                 Goto LABEL008
  358.             Endif
  359.             Forward 1
  360.             :LABEL008
  361.             Goto LABEL011
  362.         Endif
  363.         If (STRING002 == "DOWN") Then
  364.             BYTE004 = GetY()
  365.             BYTE004 = BYTE004 + 1
  366.             BYTE005 = GetX()
  367.             AnsiPos BYTE005, BYTE004
  368.             Goto LABEL011
  369.         Endif
  370.         If (STRING002 == Chr(56)) Then
  371.             BYTE004 = GetY()
  372.             BYTE004 = BYTE004 - 1
  373.             BYTE005 = GetX()
  374.             If (BYTE004 <= 6) BYTE004 = 6
  375.             AnsiPos BYTE005, BYTE004
  376.             Goto LABEL011
  377.         Endif
  378.         If (STRING002 == "UP") Then
  379.             BYTE004 = GetY()
  380.             BYTE004 = BYTE004 - 1
  381.             BYTE005 = GetX()
  382.             If (BYTE004 <= 6) BYTE004 = 6
  383.             AnsiPos BYTE005, BYTE004
  384.             Goto LABEL011
  385.         Endif
  386.         If (STRING002 == "LEFT") Then
  387.             BYTE005 = GetX()
  388.             Backup 1
  389.             Goto LABEL011
  390.         Endif
  391.         If (BYTE002 == "1") Then
  392.             BYTE005 = GetX()
  393.             Goto LABEL011
  394.         Endif
  395.         If (STRING002 == "INS") Then
  396.             BYTE005 = GetX()
  397.             BYTE003 = GetY()
  398.             If (BYTE002 == "0") Then
  399.                 AnsiPos 1, 1
  400.                 Print "@X0A Insert on @X07"
  401.                 AnsiPos BYTE005, BYTE003
  402.                 STRING002 = STRING002 + " " + STRING001
  403.                 BYTE002 = "1"
  404.                 Goto LABEL009
  405.             Endif
  406.             If (BYTE002 == "1") Then
  407.                 AnsiPos 1, 1
  408.                 Print "@X0C Insert off@X07"
  409.                 AnsiPos BYTE005, BYTE003
  410.                 STRING002 = STRING002
  411.                 BYTE002 = "0"
  412.             Endif
  413.             :LABEL009
  414.             Goto LABEL011
  415.         Endif
  416.         If ((STRING002 == STRING004) || (STRING002 == STRING005)) Then
  417.             If (BYTE001 > 0) Then
  418.                 Print STRING004 + " "
  419.                 BYTE001 = BYTE001 - 1
  420.                 STRING001 = Left(STRING001, BYTE001)
  421.                 Goto LABEL010
  422.             Endif
  423.             If ((STRING002 >= " ") && (BYTE001 < 65)) Then
  424.                 STRING001 = STRING001 + STRING002
  425.                 BYTE001 = BYTE001 + 1
  426.                 Goto LABEL010
  427.             Endif
  428.             Goto LABEL012
  429.             :LABEL010
  430.             Goto LABEL011
  431.         Endif
  432.         Print STRING002
  433.         :LABEL011
  434.         Print STRING007 + "[s"
  435.     Endif
  436.     :LABEL012
  437.     Goto LABEL005
  438.     :LABEL013
  439.     End
  440.     :LABEL014
  441.     Select Case (STRING022)
  442.         Case "C"
  443.             FCreate 1, STRING021, 2, 0
  444.         Case "E"
  445.             FOpen 1, STRING021, 2, 0
  446.             STRING012 = 0
  447.             :LABEL015
  448.             If (Ferr(1)) Goto LABEL016
  449.             STRING012 = STRING012 + 1
  450.             If (STRING012 == 17) Return
  451.             FGet 1, STRING001
  452.             PrintLn STRING001
  453.             Goto LABEL015
  454.             :LABEL016
  455.             FClose 1
  456.         Case "A"
  457.             Rename STRING021, STRING021 + ".TMP"
  458.     End Select
  459.     Return
  460.  
  461. ;------------------------------------------------------------------------------
  462. ;
  463. ; Usage report (before postprocessing)
  464. ;
  465. ; ■ Statements used :
  466. ;
  467. ;    8       End
  468. ;    8       Cls
  469. ;    1       ClrEol
  470. ;    5       Wait
  471. ;    2       Color 
  472. ;    105     Goto 
  473. ;    106     Let 
  474. ;    16      Print 
  475. ;    29      PrintLn 
  476. ;    65      If 
  477. ;    4       DispFile 
  478. ;    1       FCreate 
  479. ;    2       FOpen 
  480. ;    2       FClose 
  481. ;    1       FGet 
  482. ;    2       FPutLn 
  483. ;    1       GetUser
  484. ;    5       PutUser
  485. ;    1       DefColor
  486. ;    2       Delete 
  487. ;    4       InputStr 
  488. ;    2       Gosub 
  489. ;    2       Return
  490. ;    2       Newline
  491. ;    2       Newlines 
  492. ;    30      AnsiPos 
  493. ;    1       Backup 
  494. ;    1       Forward 
  495. ;    1       SaveScrn
  496. ;    1       RestScrn
  497. ;    2       Rename 
  498. ;    1       Append 
  499. ;
  500. ;
  501. ; ■ Functions used :
  502. ;
  503. ;    1       *
  504. ;    48      +
  505. ;    10      -
  506. ;    47      ==
  507. ;    1       <>
  508. ;    2       <
  509. ;    3       <=
  510. ;    3       >
  511. ;    5       >=
  512. ;    58      !
  513. ;    3       &&
  514. ;    3       ||
  515. ;    4       Left()
  516. ;    1       Ferr()
  517. ;    17      Chr()
  518. ;    1       Date()
  519. ;    1       Inkey()
  520. ;    1       String()
  521. ;    2       CurConf()
  522. ;    1       PCBDat()
  523. ;    3       PPEPath()
  524. ;    2       ReadLine()
  525. ;    4       OnLocal()
  526. ;    3       Exist()
  527. ;    1       AnsiOn()
  528. ;    17      GetX()
  529. ;    17      GetY()
  530. ;    2       GrafMode()
  531. ;    1       ScrText()
  532. ;    1       Mixed()
  533. ;
  534. ;------------------------------------------------------------------------------
  535. ;
  536. ; Analysis flags : Wd
  537. ;
  538. ; W - Write user ■ 5
  539. ;     Program writes a user record. Although this may be normal for a
  540. ;     User Editor, it may also be a way to modify an account level.
  541. ;     ■ Search for : PUTUSER
  542. ;
  543. ; d - Access PCBOARD.DAT ■ 2
  544. ;     Program gets the full pathname to PCBOARD.DAT, this may be usefull
  545. ;     for many PPE so they can find various informations on the system
  546. ;     (system paths, max number of lines in messages, ...) but it may also
  547. ;     be a way to gather vital informations.
  548. ;     ■ Search for : PCBDAT()
  549. ;
  550. ;------------------------------------------------------------------------------
  551. ;
  552. ; Postprocessing report
  553. ;
  554. ;    1       For/Next
  555. ;    0       While/EndWhile
  556. ;    40      If/Then or If/Then/Else
  557. ;    3       Select Case
  558. ;
  559. ;------------------------------------------------------------------------------
  560. ;                 AEGiS Corp - Break the routines, code against the machines!
  561. ;------------------------------------------------------------------------------
  562.