home *** CD-ROM | disk | FTP | other *** search
/ ftp.wwiv.com / ftp.wwiv.com.zip / ftp.wwiv.com / pub / OFFLINE / QWKBLT13.ZIP / QWK-BLT.PPE (.txt) < prev    next >
PCBoard Programming Language Executable  |  1993-12-16  |  4KB  |  299 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.     Boolean  BOOLEAN002
  21.     Boolean  BOOLEAN003
  22.     Integer  INTEGER001
  23.     Integer  INTEGER002
  24.     Integer  INTEGER003
  25.     Integer  INTEGER004
  26.     Integer  INTEGER005
  27.     Integer  INTEGER006
  28.     Integer  INTEGER007
  29.     Integer  INTEGER008
  30.     Integer  INTEGER009
  31.     Integer  INTEGER010
  32.     Integer  INTEGER011
  33.     Integer  INTEGER012
  34.     Integer  INTEGER013
  35.     String   STRING001
  36.     String   STRING002
  37.     String   STRING003
  38.     String   STRING004
  39.     String   STRING005
  40.     String   STRING006
  41.     String   STRING007
  42.     String   STRING008
  43.     String   STRING009
  44.  
  45. ;------------------------------------------------------------------------------
  46.  
  47.     STRING003 = ""
  48.     INTEGER002 = 0
  49.     INTEGER004 = 1
  50.     INTEGER006 = 1
  51.     STRING004 = GetToken()
  52.     While (STRING004 <> "") Do
  53.         If (Left(Upper(STRING004), 1) == "B") Then
  54.             INTEGER002 = Or(INTEGER002, 1)
  55.         ElseIf (STRING003 > "") Then
  56.             STRING003 = STRING003 + ";" + STRING004
  57.         Else
  58.             STRING003 = STRING004
  59.         Endif
  60.         If (Left(Upper(STRING004), 1) == "D") INTEGER002 = Or(INTEGER002, 2)
  61.         STRING004 = GetToken()
  62.     EndWhile
  63.     If (INTEGER002 <> 3) Goto LABEL013
  64.     GetUser
  65.     STRING001 = ReadLine(PCBDat(), 31)
  66.     STRING002 = Trim(ReadLine(STRING001, 25), " ")
  67.     If ((STRING002 == "") || (Left(STRING002, 1) == " ")) Goto LABEL013
  68.     If (Exist(STRING002)) Then
  69.         If (Exist(PPEPath() + PPEName() + ".cfg")) Then
  70.             BOOLEAN002 = 1
  71.             STRING007 = ""
  72.             STRING007 = ReadLine(PPEPath() + PPEName() + ".cfg", 1)
  73.             Goto LABEL001
  74.         Endif
  75.         BOOLEAN002 = 0
  76.         :LABEL001
  77.         INTEGER005 = FileInf(STRING002, 4) / 30
  78.         Gosub LABEL005
  79.         INTEGER001 = RegAX()
  80.         If (BOOLEAN001) Goto LABEL013
  81.         DispStr "@X0FScanning Bulletins "
  82.         If (BOOLEAN002) Then
  83.             While ((INTEGER004 <= Len(STRING007)) && (INTEGER004 <= INTEGER005)) Do
  84.                 If (Mid(STRING007, INTEGER004, 1) <> "Y") Goto LABEL002
  85.                 If (INTEGER006 <> INTEGER004 - 1) Gosub LABEL007
  86.                 DispStr "."
  87.                 Gosub LABEL006
  88.                 Gosub LABEL009
  89.                 :LABEL002
  90.                 Inc INTEGER004
  91.             EndWhile
  92.             Goto LABEL004
  93.         Endif
  94.         While (INTEGER004 <= INTEGER005) Do
  95.             If (And(INTEGER004, 1) == 1) DispStr "."
  96.             Gosub LABEL006
  97.             Gosub LABEL009
  98.             :LABEL003
  99.             Inc INTEGER004
  100.         EndWhile
  101.         :LABEL004
  102.         Gosub LABEL008
  103.         DispStr Chr(13)
  104.         Goto LABEL013
  105.         :LABEL005
  106.         VarSeg STRING002, INTEGER013
  107.         VarOff STRING002, INTEGER012
  108.         INTEGER009 = 15648
  109.         DoIntr 33, INTEGER009, INTEGER010, INTEGER011, INTEGER012, 0, 0, 0, INTEGER013, 0
  110.         INTEGER001 = RegAX()
  111.         BOOLEAN001 = RegCF()
  112.         Return
  113.         :LABEL006
  114.         STRING008 = "                              "
  115.         INTEGER010 = INTEGER001
  116.         INTEGER009 = 16128
  117.         INTEGER011 = Len(STRING008)
  118.         VarSeg STRING008, INTEGER013
  119.         VarOff STRING008, INTEGER012
  120.         DoIntr 33, INTEGER009, INTEGER010, INTEGER011, INTEGER012, 0, 0, 0, INTEGER013, 0
  121.         BOOLEAN001 = RegCF()
  122.         If (BOOLEAN001 || (RegAX() == 0)) STRING008 = ""
  123.         INTEGER006 = INTEGER004
  124.         Return
  125.         :LABEL007
  126.         INTEGER010 = INTEGER001
  127.         INTEGER009 = 16896
  128.         INTEGER012 = (30 * (INTEGER004 - 1)) % 4096
  129.         INTEGER011 = (30 * (INTEGER004 - 1)) / 4096
  130.         DoIntr 33, INTEGER009, INTEGER010, INTEGER011, INTEGER012, 0, 0, 0, INTEGER013, 0
  131.         BOOLEAN001 = RegCF()
  132.         Return
  133.         :LABEL008
  134.         INTEGER010 = INTEGER001
  135.         INTEGER009 = 15872
  136.         DoIntr 33, INTEGER009, INTEGER010, INTEGER011, INTEGER012, 0, 0, 0, INTEGER013, 0
  137.         BOOLEAN001 = RegCF()
  138.         Return
  139.         Inc INTEGER004
  140.         If (And(INTEGER004, 1) == 1) DispStr "."
  141.         Return
  142.         :LABEL009
  143.         STRING005 = Trim(STRING008, " ")
  144.         If (STRING008 == "") Goto LABEL003
  145.         If (!Exist(STRING005)) Goto LABEL003
  146.         If (FileInf(STRING005, 4) == 0) Goto LABEL003
  147.         INTEGER003 = 0
  148.         If (FileInf(STRING005, 2) >= U_LDate()) INTEGER003 = Or(INTEGER003, 1)
  149.         If (FileInf(STRING005, 3) > U_LTime()) INTEGER003 = Or(INTEGER003, 2)
  150.         If (INTEGER003 == 3) Then
  151.             STRING006 = TempPath() + FileInf(STRING005, 8) + FileInf(STRING005, 9)
  152.             Gosub LABEL010
  153.         Endif
  154.         Return
  155.         :LABEL010
  156.         VarSeg STRING005, INTEGER013
  157.         VarOff STRING005, INTEGER012
  158.         INTEGER009 = 15648
  159.         DoIntr 33, INTEGER009, INTEGER010, INTEGER011, INTEGER012, 0, 0, 0, INTEGER013, 0
  160.         If (RegCF()) Goto LABEL012
  161.         INTEGER007 = RegAX()
  162.         VarSeg STRING006, INTEGER013
  163.         VarOff STRING006, INTEGER012
  164.         INTEGER009 = 15360
  165.         INTEGER011 = 0
  166.         DoIntr 33, INTEGER009, INTEGER010, INTEGER011, INTEGER012, 0, 0, 0, INTEGER013, 0
  167.         If (RegCF()) Then
  168.             INTEGER010 = INTEGER007
  169.             DoIntr 33, INTEGER009, INTEGER010, INTEGER011, INTEGER012, 0, 0, 0, INTEGER013, 0
  170.             Goto LABEL012
  171.         Endif
  172.         INTEGER008 = RegAX()
  173.         STRING009 = "                                "
  174.         STRING009 = STRING009 + STRING009
  175.         STRING009 = STRING009 + STRING009
  176.         INTEGER010 = INTEGER007
  177.         INTEGER011 = Len(STRING009)
  178.         VarSeg STRING009, INTEGER013
  179.         VarOff STRING009, INTEGER012
  180.         INTEGER009 = 16128
  181.         DoIntr 33, INTEGER009, INTEGER010, INTEGER011, INTEGER012, 0, 0, 0, INTEGER013, 0
  182.         If (RegCF() || (RegAX() == 0)) Then
  183.             BOOLEAN003 = 0
  184.             Goto LABEL011
  185.         Endif
  186.         BOOLEAN003 = 1
  187.         :LABEL011
  188.         While (BOOLEAN003) Do
  189.             INTEGER010 = INTEGER008
  190.             INTEGER011 = RegAX()
  191.             INTEGER009 = 16384
  192.             DoIntr 33, INTEGER009, INTEGER010, INTEGER011, INTEGER012, 0, 0, 0, INTEGER013, 0
  193.             INTEGER010 = INTEGER007
  194.             INTEGER011 = Len(STRING009)
  195.             INTEGER009 = 16128
  196.             DoIntr 33, INTEGER009, INTEGER010, INTEGER011, INTEGER012, 0, 0, 0, INTEGER013, 0
  197.             If (RegCF() || (RegAX() == 0)) BOOLEAN003 = 0
  198.         EndWhile
  199.         INTEGER010 = INTEGER008
  200.         INTEGER009 = 15872
  201.         DoIntr 33, INTEGER009, INTEGER010, INTEGER011, INTEGER012, 0, 0, 0, INTEGER013, 0
  202.         INTEGER010 = INTEGER007
  203.         INTEGER009 = 15872
  204.         DoIntr 33, INTEGER009, INTEGER010, INTEGER011, INTEGER012, 0, 0, 0, INTEGER013, 0
  205.         :LABEL012
  206.         Return
  207.     Endif
  208.     :LABEL013
  209.     KbdStuff "qwk;" + STRING003 + Chr(13)
  210.     End
  211.  
  212. ;------------------------------------------------------------------------------
  213. ;
  214. ; Usage report (before postprocessing)
  215. ;
  216. ; ■ Statements used :
  217. ;
  218. ;    1       End
  219. ;    31      Goto 
  220. ;    66      Let 
  221. ;    28      If 
  222. ;    1       GetUser
  223. ;    8       Gosub 
  224. ;    7       Return
  225. ;    3       Inc 
  226. ;    1       KbdStuff 
  227. ;    5       DispStr 
  228. ;    12      DoIntr 
  229. ;    5       VarSeg 
  230. ;    5       VarOff 
  231. ;
  232. ;
  233. ; ■ Functions used :
  234. ;
  235. ;    2       *
  236. ;    2       /
  237. ;    1       %
  238. ;    12      +
  239. ;    3       -
  240. ;    12      ==
  241. ;    4       <>
  242. ;    3       <=
  243. ;    2       >
  244. ;    1       >=
  245. ;    13      !
  246. ;    1       &&
  247. ;    4       ||
  248. ;    4       Len(
  249. ;    2       Upper()
  250. ;    1       Mid()
  251. ;    3       Left()
  252. ;    2       Chr()
  253. ;    2       Trim()
  254. ;    1       U_LDate()
  255. ;    1       U_LTime()
  256. ;    1       PCBDat()
  257. ;    2       PPEPath()
  258. ;    3       ReadLine()
  259. ;    2       GetToken()
  260. ;    8       RegAX()
  261. ;    8       RegCF()
  262. ;    3       Exist()
  263. ;    2       And()
  264. ;    4       Or()
  265. ;    6       FileInf()
  266. ;    2       PPEName()
  267. ;    1       TempPath()
  268. ;
  269. ;------------------------------------------------------------------------------
  270. ;
  271. ; Analysis flags : Id
  272. ;
  273. ; I - Interrupt call ■ 5
  274. ;     This is rare in PPE... Although it may be a way to replace a PPE
  275. ;     command by its fast interrupt equivalent. Be aware that an
  276. ;     interrupt call may do anything... nasty (formating HD, rebooting,...)
  277. ;     or usefull (fast screen i/o, hardware ressource access,...). Check!
  278. ;     ■ Search for : DOINTR
  279. ;
  280. ; d - Access PCBOARD.DAT ■ 2
  281. ;     Program gets the full pathname to PCBOARD.DAT, this may be usefull
  282. ;     for many PPE so they can find various informations on the system
  283. ;     (system paths, max number of lines in messages, ...) but it may also
  284. ;     be a way to gather vital informations.
  285. ;     ■ Search for : PCBDAT()
  286. ;
  287. ;------------------------------------------------------------------------------
  288. ;
  289. ; Postprocessing report
  290. ;
  291. ;    0       For/Next
  292. ;    4       While/EndWhile
  293. ;    8       If/Then or If/Then/Else
  294. ;    0       Select Case
  295. ;
  296. ;------------------------------------------------------------------------------
  297. ;                 AEGiS Corp - Break the routines, code against the machines!
  298. ;------------------------------------------------------------------------------
  299.