home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / PCBOARD / SCUM_FPS.ZIP / DWNLD.PPS < prev    next >
Text File  |  1994-01-31  |  10KB  |  246 lines

  1. ;*****************************************************************************
  2. ;*                            DOWNLOAD.PPE v0.50                             *
  3. ;*                       PCBOARD 15.1 Download Counter                       *
  4. ;*                                                                           *
  5. ;*                        Written by Steven Hauswirth                        *
  6. ;*                 Written in PCBoard Programming Language                   *
  7. ;*                                                                           *
  8. ;*                          "The Power Palace BBS"                           *
  9. ;*               Node 1 - 312-594-0643 - [14.4 v32b] - 80386/40              *
  10. ;*                                                                           *
  11. ;*   This PPE is a full screen download counter that informs the user how    *
  12. ;*   many files, bytes, et cetera they have flagged for download.            *
  13. ;*****************************************************************************
  14. IF (EXIST("DLINFO.FPS")) DELETE "DLINFO.FPS"
  15. IF (!ANSION()) THEN
  16.         PRINT "Enter the filename to Download (Enter)=none"
  17.         GOTO EXIT
  18. ENDIF
  19.  
  20. ;┌───────────────────────────────────────────────────────────────────────────┐
  21. ;│ Declare Variable Types                                                    │
  22. ;└───────────────────────────────────────────────────────────────────────────┘
  23. STRING TEMP, Y, FILE_NAME, FILE_NUM, FILE_SIZE, FILE_MIN, FILE_SEC, FLAG_FILE
  24. DATE FILE_DATE
  25. STRING NO_TIME, FREE_FILE, FILE_COST, TOTAL_COST, FP
  26. INTEGER COUNT, LOOP, BAT_TIME, BAT_MIN, BAT_SEC, SPEED, SPEED2, MAJOR_TOTAL, LC
  27. INTEGER TEMP1, TEMP2, TEMP3, FPC, TFPC, FPCH, TOTAL_FREE, FPDIVISOR, FLAGGED_BYTES
  28.  
  29. LET FLAG_FILE = GETENV("PCBDRIVE")+GETENV("PCBDIR")+"\FLIST."+STRING(PCBNODE())
  30. LET FILE_NUM = 0
  31. TEMP1 = 0
  32. TEMP2 = 0
  33. TEMP3 = 0
  34. LET Y = 1
  35. LET LOOP = 1
  36. LET TOTAL_FREE = 0
  37. ; OPEN PCB-FPC'S CONFIG FILE TO GET FILE POINT DIVISOR
  38. LET FPDIVISOR = READLINE (PPEPATH()+"PCBFPS.CFG",2)
  39. ;┌───────────────────────────────────────────────────────────────────────────┐
  40. ;│ Check to see if they have NOT flagged any files yet for download, or if   │
  41. ;│ the user has decided not to download the flagged files.                   │
  42. ;└───────────────────────────────────────────────────────────────────────────┘
  43. IF (EXIST(FLAG_FILE)) THEN
  44. FOPEN 1,FLAG_FILE,O_RD,S_DN
  45. FDEFIN 1
  46. FSEEK 1,0,SEEK_SET(0)
  47. FOR LOOP = 1 TO 100000
  48.    FSEEK 1,66,SEEK_CUR(1)
  49.    FDREAD FILE_NAME,13
  50.    IF (FERR(1)) BREAK
  51.    FSEEK 1,50,SEEK_CUR(1)
  52. NEXT
  53. ENDIF
  54. COUNT = LOOP
  55. IF (LOOP != 1) THEN
  56.   WAIT 
  57. ELSE 
  58.   IF (EXIST("dlinfo.fps")) delete "dlinfo.pps"
  59. ENDIF
  60. ;┌───────────────────────────────────────────────────────────────────────────┐
  61. ;│ Display the header of the dispay                                          │
  62. ;└───────────────────────────────────────────────────────────────────────────┘
  63. PRINTLN " "
  64. PRINTLN "!|1K|*"
  65. PRINTLN "@CLS@@X0A ┌────────────────────────────────────────────────────────────────────────────┐"
  66. PRINTLN " │  @X09░▒▓█@X1B         Statistics for the last 10 files in your batch         @X09█▓▒░@X0A  │"
  67. PRINTLN " │                                                                            │"
  68. PRINTLN " │  @X0BNum     Filename       Size       Date     Transfer Time   Cost  No Time  @X0A│"
  69. PRINTLN " │  @X0D────  ────────────  ──────────  ────────  ───────────────  ────  ───────  @X0A│"
  70.  
  71. ;┌───────────────────────────────────────────────────────────────────────────┐
  72. ;│ Since there are files already flagged for download. Find out how many.    │
  73. ;│ If there are more then 10 then position display to only display the last  │
  74. ;│ ten of them.                                                              │
  75. ;└───────────────────────────────────────────────────────────────────────────┘
  76. ; OPEN NEW FILE FOR FPS DLINFO
  77. FOPEN 6,"DLINFO.FPS",O_WR,S_DN
  78. GETUSER
  79. FPUTLN 6,U_NAME()
  80. FPUTLN 6,COUNT-1
  81. FSEEK 1,0,SEEK_SET(0)
  82. IF (COUNT>10) THEN
  83.  FOR LOOP = 1 TO (COUNT-10)
  84.    FDREAD TEMP,66
  85.    IF (FERR(1)) BREAK
  86.    TEMP = TRIM(TEMP," ")
  87.    FILE_DATE = FILEINF(TEMP,2)
  88.    FDREAD FILE_NAME,13
  89.    FPUTLN 6,FILE_NAME
  90.    FDREAD TEMP,4
  91.    TEMP = TRIM(TEMP," ")
  92.    TEMP1 = ASC(LEFT(TEMP,1))
  93.    IF (LEN(TEMP)>1) TEMP2 =256*ASC(MID(TEMP,2,1))
  94.    IF (LEN(TEMP)=3) TEMP3 =65536*ASC(RIGHT(TEMP,1))
  95.    FILE_SIZE = TEMP1+TEMP2+TEMP3
  96.    LC = FILE_SIZE / FPDIVISOR
  97.    TEMP2 = 0
  98.    TEMP3 = 0
  99.    FDREAD TEMP,3
  100.    TEMP = TRIM(TEMP," ")
  101.    TEMP1 = ASC(LEFT(TEMP,1))
  102.    IF (LEN(TEMP)>1) TEMP2 =256*ASC(MID(TEMP,2,1))
  103.    IF (LEN(TEMP)=3) TEMP3 =65536*ASC(RIGHT(TEMP,1))
  104.    FILE_SEC = TEMP1+TEMP2+TEMP3
  105.    FSEEK 1,9,SEEK_CUR(1)
  106.    FDREAD FREE_FILE,1
  107.    IF (ASC(FREE_FILE)=1) LC = 0
  108.    FPUTLN 6,LC
  109.    FDREAD NO_TIME,1
  110.    FDREAD TEMP,1
  111.    FSEEK 1,31,SEEK_CUR(1)
  112.  NEXT
  113. ELSE COUNT = 10
  114. ENDIF
  115. LET Y = COUNT-9
  116.  
  117. ;┌───────────────────────────────────────────────────────────────────────────┐
  118. ;│ Display the file name, bytes, and transfer time for all the files flagged │
  119. ;└───────────────────────────────────────────────────────────────────────────┘
  120. FOR LOOP= 1 TO COUNT
  121. ;   FSEEK 1,66,SEEK_CUR(1)
  122.    FDREAD TEMP,66
  123.    IF (FERR(1)) BREAK
  124.    TEMP = TRIM(TEMP," ")
  125.    FILE_DATE = FILEINF(TEMP,2)
  126.    FDREAD FILE_NAME,13
  127.    FPUTLN 6,FILE_NAME
  128.    FDREAD TEMP,4
  129.    TEMP = TRIM(TEMP," ")
  130.    TEMP1 = ASC(LEFT(TEMP,1))
  131.    IF (LEN(TEMP)>1) TEMP2 =256*ASC(MID(TEMP,2,1))
  132.    IF (LEN(TEMP)=3) TEMP3 =65536*ASC(RIGHT(TEMP,1))
  133.    FILE_SIZE = TEMP1+TEMP2+TEMP3
  134.    TEMP2 = 0
  135.    TEMP3 = 0
  136.    FDREAD TEMP,3
  137.    TEMP = TRIM(TEMP," ")
  138.    TEMP1 = ASC(LEFT(TEMP,1))
  139.    IF (LEN(TEMP)>1) TEMP2 =256*ASC(MID(TEMP,2,1))
  140.    IF (LEN(TEMP)=3) TEMP3 =65536*ASC(RIGHT(TEMP,1))
  141.    FILE_SEC = TEMP1+TEMP2+TEMP3
  142.    FSEEK 1,9,SEEK_CUR(1)
  143.    FDREAD FREE_FILE,1
  144.    FDREAD NO_TIME,1
  145.    FDREAD TEMP,1
  146.    FSEEK 1,31,SEEK_CUR(1)
  147.    FILE_MIN = STRING(S2I(FILE_SEC,10)/60)
  148.    FILE_SEC = STRING(S2I(FILE_SEC,10)-(S2I(FILE_MIN,10)*60))
  149.    PRINT " │@X0B"+LEFT("     ",5-LEN(Y))+STRING(Y)+LEFT("                 ",15-LEN(FILE_NAME))+"@X0F"
  150.    PRINT FILE_NAME+LEFT("               ",12-LEN(FILE_SIZE))
  151.    LET FPCH = FILE_SIZE
  152.    LET FPC = FPCH / FPDIVISOR
  153.    LET FP = FPC
  154.    IF (FP = "0") THEN
  155.       LET FP = "FREE"
  156.       LET TOTAL_FREE = TOTAL_FREE + FPCH
  157.    ENDIF
  158.    PRINT FILE_SIZE+"  "
  159.    PRINT STRING(FILE_DATE)+LEFT("     ",5-LEN(FILE_MIN))
  160.    PRINT FILE_MIN+" @X07min@X0F"+LEFT("    ",3-LEN(STRING(FILE_SEC)))+STRING(FILE_SEC)+" @X07sec"+LEFT("      ",6-LEN(FP))
  161.    IF (ASC(FREE_FILE)=1) THEN
  162.       PRINT "@X0CFREE"
  163.       LET TOTAL_FREE = TOTAL_FREE + FPCH
  164.       FPUTLN 6,"0"
  165.    ELSE 
  166.      PRINT "@X0E"+FP
  167.      LET TFPC = TFPC + FPC
  168.      FPUTLN 6,FP
  169.    ENDIF
  170.    PRINT "      "
  171.    IF (ASC(NO_TIME)=1) THEN
  172.       PRINT "@X0CY"
  173.    ELSE PRINT "@X0C@X0EN"
  174.    ENDIF
  175.    ANSIPOS 79,5+LOOP
  176.    PRINTLN "@X0A│"
  177.    ANSIPOS 1,6+LOOP
  178.    INC Y
  179. NEXT
  180.  
  181. ;┌────────────────────────────────────────────────────────────────────────────┐
  182. ;│ Display with blank lines to fill the screen to ten file placements listed  │
  183. ;└────────────────────────────────────────────────────────────────────────────┘
  184. :CONT
  185.     FOR LOOP = LOOP TO 10
  186.     PRINTLN " @X0A│@X0B"+LEFT("    ",5-LEN(Y))+STRING(Y)+"                          @X0F0  00-00-00    0 @X07min  @X0F0 @X07sec                  @X0A│"
  187.     INC Y
  188.     NEXT
  189. :BACK
  190.  
  191.  
  192. ;┌───────────────────────────────────────────────────────────────────────────┐
  193. ;│ Display the footer of the dispay                                          │
  194. ;└───────────────────────────────────────────────────────────────────────────┘
  195. PRINTLN " │                                                                            │"
  196. PRINTLN " │  @X09░▒▓█@X1B                Statistics for the ENTIRE batch                 @X09█▓▒░@X0A  │"
  197. PRINTLN " │       @X07Files       @X07Size (Bytes)       File Points      @X07Estimated time     @X0F  │"
  198. PRINT " │         @X0F@FFILES:3@           @X0F@FBYTES:12@         "
  199.  
  200. LET FLAGGED_BYTES = S2I(TRIM(SCRTEXT(26,19,12,FALSE)," "),10)
  201. LET MAJOR_TOTAL =((FLAGGED_BYTES - TOTAL_FREE) / FPDIVISOR) 
  202. LET TOTAL_COST = TFPC
  203. IF (MAJOR_TOTAL > TFPC) LET TOTAL_COST = MAJOR_TOTAL
  204.  
  205. PRINT TOTAL_COST+"           @X0F"
  206.  
  207. ;┌───────────────────────────────────────────────────────────────────────────┐
  208. ;│ Calculate the BATCH transfer time from the BATCH bytes listed on screen   │
  209. ;│ taking into account local logons and error correcting modems.             │
  210. ;└───────────────────────────────────────────────────────────────────────────┘
  211. LET FILE_NUM = TRIM(SCRTEXT(12,19,2,FALSE)," ")
  212. LET BAT_TIME = S2I(TRIM(SCRTEXT(26,19,12,FALSE)," "),10)
  213. IF (ONLOCAL()) THEN
  214.     SPEED=0.9*(READLINE(PCBDAT(),53)/10)
  215. ELSE
  216.     SPEED = CARRIER()/10
  217.     IF (ERRCORRECT()) THEN
  218.       SPEED = SPEED * 1.05
  219.     ELSE SPEED = .96*SPEED
  220.     ENDIF
  221. ENDIF
  222. SPEED2 = SPEED*60
  223. BAT_MIN = BAT_TIME/SPEED2
  224. BAT_SEC = BAT_TIME%SPEED
  225. BAT_SEC = BAT_SEC/60
  226. PRINT STRING(BAT_MIN)+" @X07min"+" @X0F"+STRING(BAT_SEC)+" @X07sec@X0A"
  227. ANSIPOS 79,19
  228. PRINTLN "│"
  229. PRINTLN " └────────────────────────────────────────────────────────────────────────────┘"
  230. PRINTLN "       @X07Enter @X0Ffilename @X07on line above, or (@X0CENTER@X07) alone to continue"
  231.  
  232. ;┌───────────────────────────────────────────────────────────────────────────┐
  233. ;│ Position cursor on the screen and ask for file name. Then stuff it into   │
  234. ;│ keyboard buffer and exit                                                  │
  235. ;└───────────────────────────────────────────────────────────────────────────┘
  236. IF (S2I(FILE_NUM,10)>9) FILE_NUM = 9
  237. ANSIPOS 11,6+FILE_NUM
  238. LET FILE_NAME = ""
  239. INPUTSTR "_",file_name,@X07,12,MASK_FILE(),UPCASE
  240. ANSIPOS 1,21
  241. FILE_NAME=TRIM(FILE_NAME," ")
  242. IF (LEN(file_name) = 0) file_name = CHR(13)
  243. FCLOSE 6
  244. KBDSTUFF file_name
  245. :EXIT
  246. END