home *** CD-ROM | disk | FTP | other *** search
/ Monster Media 1994 #1 / monster.zip / monster / PCBOARD / DWNLDCD.ZIP / DWNLDCD.PPS < prev    next >
Text File  |  1994-01-03  |  8KB  |  181 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 (!ANSION()) THEN
  15.         PRINT "Enter the filename to Download (Enter)=none"
  16.         GOTO EXIT
  17. ENDIF
  18.  
  19. ;┌───────────────────────────────────────────────────────────────────────────┐
  20. ;│ Declare Variable Types                                                    │
  21. ;└───────────────────────────────────────────────────────────────────────────┘
  22. STRING TEMP, Y, FILE_NAME, FILE_NUM, FILE_SIZE, FILE_MIN, FILE_SEC, FLAG_FILE
  23. STRING NO_TIME, FREE_FILE
  24. INTEGER COUNT, LOOP, BAT_TIME, BAT_MIN, BAT_SEC, SPEED, SPEED2
  25. INTEGER TEMP1, TEMP2, TEMP3
  26.  
  27. IF (PCBNODE() = 0) THEN
  28.     LET FLAG_FILE = GETENV("PCBDRIVE")+GETENV("PCBDIR")+"\FLIST."
  29. ELSE
  30.     LET FLAG_FILE = GETENV("PCBDRIVE")+GETENV("PCBDIR")+"\FLIST."+STRING(PCBNODE())
  31. ENDIF
  32. LET FILE_NUM = 0
  33. TEMP1 = 0
  34. TEMP2 = 0
  35. TEMP3 = 0
  36. LET Y = 1
  37. LET LOOP = 1
  38.  
  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. FOPEN 1,FLAG_FILE,O_RD,S_DN
  44. FDEFIN 1
  45. FSEEK 1,0,SEEK_SET(0)
  46. FOR LOOP = 1 TO 100000
  47.    FSEEK 1,66,SEEK_CUR(1)
  48.    FDREAD FILE_NAME,13
  49.    IF (FERR(1)) BREAK
  50.    FSEEK 1,50,SEEK_CUR(1)
  51. NEXT
  52. COUNT = LOOP
  53. IF (LOOP != 1) WAIT
  54.  
  55. ;┌───────────────────────────────────────────────────────────────────────────┐
  56. ;│ Display the header of the dispay                                          │
  57. ;└───────────────────────────────────────────────────────────────────────────┘
  58. PRINTLN " "
  59. PRINTLN "!|1K|*"
  60. PRINTLN "@CLS@@X0A ┌────────────────────────────────────────────────────────────────────────────┐"
  61. PRINTLN " │  @X09░▒▓█@X1B         Statistics for the last 10 files in your batch         @X09█▓▒░@X0A  │"
  62. PRINTLN " │                                                                            │"
  63. PRINTLN " │   @X0BNum      Filename         Size        Transfer Time     Free    No Time  @X0A│"
  64. PRINTLN " │  @X0D────    ────────────    ──────────    ───────────────    ────    ───────  @X0A│"
  65.  
  66. ;┌───────────────────────────────────────────────────────────────────────────┐
  67. ;│ Since there are files already flagged for download. Find out how many.    │
  68. ;│ If there are more then 10 then position display to only display the last  │
  69. ;│ ten of them.                                                              │
  70. ;└───────────────────────────────────────────────────────────────────────────┘
  71. FSEEK 1,0,SEEK_SET(0)
  72. IF (COUNT>10) THEN
  73.    FOR LOOP = 1 TO (COUNT-10)
  74.       FSEEK 1,129,SEEK_CUR(1)
  75.    NEXT
  76. ELSE COUNT = 10
  77. ENDIF
  78. LET Y = COUNT-9
  79.  
  80. ;┌───────────────────────────────────────────────────────────────────────────┐
  81. ;│ Display the file name, bytes, and transfer time for all the files flagged │
  82. ;└───────────────────────────────────────────────────────────────────────────┘
  83. FOR LOOP= 1 TO COUNT
  84.    FSEEK 1,66,SEEK_CUR(1)
  85.    FDREAD FILE_NAME,13
  86.    IF (FERR(1)) BREAK
  87.    FDREAD TEMP,4
  88.    TEMP = TRIM(TEMP," ")
  89.    TEMP1 = ASC(LEFT(TEMP,1))
  90.    IF (LEN(TEMP)>1) TEMP2 =256*ASC(MID(TEMP,2,1))
  91.    IF (LEN(TEMP)=3) TEMP3 =65536*ASC(RIGHT(TEMP,1))
  92.    FILE_SIZE = TEMP1+TEMP2+TEMP3
  93.    TEMP2 = 0
  94.    TEMP3 = 0
  95.    FDREAD TEMP,3
  96.    TEMP = TRIM(TEMP," ")
  97.    TEMP1 = ASC(LEFT(TEMP,1))
  98.    IF (LEN(TEMP)>1) TEMP2 =256*ASC(MID(TEMP,2,1))
  99.    IF (LEN(TEMP)=3) TEMP3 =65536*ASC(RIGHT(TEMP,1))
  100.    FILE_SEC = TEMP1+TEMP2+TEMP3
  101.    FSEEK 1,9,SEEK_CUR(1)
  102.    FDREAD FREE_FILE,1
  103.    FDREAD NO_TIME,1
  104.    FSEEK 1,32,SEEK_CUR(1)
  105.    FILE_MIN = STRING(S2I(FILE_SEC,10)/60)
  106.    FILE_SEC = STRING(S2I(FILE_SEC,10)-(S2I(FILE_MIN,10)*60))
  107.    PRINT " │@X0B"+LEFT("     ",6-LEN(Y))+STRING(Y)+LEFT("                 ",16-LEN(FILE_NAME))+"@X0F"
  108.    PRINT FILE_NAME+LEFT("               ",14-LEN(FILE_SIZE))
  109.    PRINT FILE_SIZE+LEFT("         ",8-LEN(FILE_MIN))
  110.    PRINT FILE_MIN+" @X07min@X0F"+LEFT("    ",3-LEN(STRING(FILE_SEC)))+STRING(FILE_SEC)+" @X07sec      "
  111.    IF (ASC(FREE_FILE)=1) THEN
  112.       PRINT "@X0CY"
  113.    ELSE PRINT "@X0EN"
  114.    ENDIF
  115.    PRINT "        "
  116.    IF (ASC(NO_TIME)=1) THEN
  117.       PRINT "@X0CY"
  118.    ELSE PRINT "@X0C@X0EN"
  119.    ENDIF
  120.    ANSIPOS 79,5+LOOP
  121.    PRINTLN "@X0A│"
  122.    ANSIPOS 1,6+LOOP
  123.    INC Y
  124. NEXT
  125.  
  126. ;┌────────────────────────────────────────────────────────────────────────────┐
  127. ;│ Display with blank lines to fill the screen to ten file placements listed  │
  128. ;└────────────────────────────────────────────────────────────────────────────┘
  129. :CONT
  130.     FOR LOOP = LOOP TO 10
  131.     PRINTLN " @X0A│@X0B"+LEFT("     ",6-LEN(Y))+STRING(Y)+"                             @X0F0       0 @X07min  @X0F0 @X07sec                     @X0A│"
  132.     INC Y
  133.     NEXT
  134. :BACK
  135.  
  136. ;┌───────────────────────────────────────────────────────────────────────────┐
  137. ;│ Display the footer of the dispay                                          │
  138. ;└───────────────────────────────────────────────────────────────────────────┘
  139. PRINTLN " │                                                                            │"
  140. PRINTLN " │  @X09░▒▓█@X1B                Statistics for the ENTIRE batch                 @X09█▓▒░@X0A  │"
  141. PRINTLN " │                                                                            │"
  142. PRINT " │    @X07Files: @X0F@FFILES:3@  @X07Size (bytes): @X0F@FBYTES:12@  @X07Estimated time: @X0F"
  143.  
  144. ;┌───────────────────────────────────────────────────────────────────────────┐
  145. ;│ Calculate the BATCH transfer time from the BATCH bytes listed on screen   │
  146. ;│ taking into account local logons and error correcting modems.             │
  147. ;└───────────────────────────────────────────────────────────────────────────┘
  148. LET FILE_NUM = TRIM(SCRTEXT(14,19,2,FALSE)," ")
  149. LET BAT_TIME = S2I(TRIM(SCRTEXT(33,19,12,FALSE)," "),10)
  150. IF (ONLOCAL()) THEN
  151.     SPEED=0.09*(READLINE(PCBDAT(),53))
  152. ELSE
  153.     SPEED = CARRIER()/10
  154.     IF (ERRCORRECT()) THEN
  155.       SPEED = SPEED * 1.05
  156.     ELSE SPEED = .96*SPEED
  157.     ENDIF
  158. ENDIF
  159. SPEED2 = SPEED*60
  160. BAT_MIN = BAT_TIME/SPEED2
  161. BAT_SEC = (BAT_TIME/SPEED)-(BAT_MIN*60)
  162. PRINT STRING(BAT_MIN)+" @X07min"+" @X0F"+STRING(BAT_SEC)+" @X07sec@X0A"
  163. ANSIPOS 79,19
  164. PRINTLN "│"
  165. PRINTLN " └────────────────────────────────────────────────────────────────────────────┘"
  166. PRINTLN "           @X07Enter @X0Ffilename @X07on line above, or (@X0CENTER@X07) alone to continue"
  167.  
  168. ;┌───────────────────────────────────────────────────────────────────────────┐
  169. ;│ Position cursor on the screen and ask for file name. Then stuff it into   │
  170. ;│ keyboard buffer and exit                                                  │
  171. ;└───────────────────────────────────────────────────────────────────────────┘
  172. IF (S2I(FILE_NUM,10)>9) FILE_NUM = 9
  173. ANSIPOS 13,6+FILE_NUM
  174. LET FILE_NAME = ""
  175. INPUTSTR "_",file_name+"*?",@X07,12,MASK_FILE(),UPCASE
  176. ANSIPOS 1,21
  177. FILE_NAME=TRIM(FILE_NAME," ")
  178. IF (LEN(file_name) = 0) file_name = CHR(13)
  179. KBDSTUFF file_name
  180. :EXIT
  181. END