home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Monster Media 1994 #1
/
monster.zip
/
monster
/
PCBOARD
/
SCUM_FPS.ZIP
/
DWNLD.PPS
< prev
next >
Wrap
Text File
|
1994-01-31
|
10KB
|
246 lines
;*****************************************************************************
;* DOWNLOAD.PPE v0.50 *
;* PCBOARD 15.1 Download Counter *
;* *
;* Written by Steven Hauswirth *
;* Written in PCBoard Programming Language *
;* *
;* "The Power Palace BBS" *
;* Node 1 - 312-594-0643 - [14.4 v32b] - 80386/40 *
;* *
;* This PPE is a full screen download counter that informs the user how *
;* many files, bytes, et cetera they have flagged for download. *
;*****************************************************************************
IF (EXIST("DLINFO.FPS")) DELETE "DLINFO.FPS"
IF (!ANSION()) THEN
PRINT "Enter the filename to Download (Enter)=none"
GOTO EXIT
ENDIF
;┌───────────────────────────────────────────────────────────────────────────┐
;│ Declare Variable Types │
;└───────────────────────────────────────────────────────────────────────────┘
STRING TEMP, Y, FILE_NAME, FILE_NUM, FILE_SIZE, FILE_MIN, FILE_SEC, FLAG_FILE
DATE FILE_DATE
STRING NO_TIME, FREE_FILE, FILE_COST, TOTAL_COST, FP
INTEGER COUNT, LOOP, BAT_TIME, BAT_MIN, BAT_SEC, SPEED, SPEED2, MAJOR_TOTAL, LC
INTEGER TEMP1, TEMP2, TEMP3, FPC, TFPC, FPCH, TOTAL_FREE, FPDIVISOR, FLAGGED_BYTES
LET FLAG_FILE = GETENV("PCBDRIVE")+GETENV("PCBDIR")+"\FLIST."+STRING(PCBNODE())
LET FILE_NUM = 0
TEMP1 = 0
TEMP2 = 0
TEMP3 = 0
LET Y = 1
LET LOOP = 1
LET TOTAL_FREE = 0
; OPEN PCB-FPC'S CONFIG FILE TO GET FILE POINT DIVISOR
LET FPDIVISOR = READLINE (PPEPATH()+"PCBFPS.CFG",2)
;┌───────────────────────────────────────────────────────────────────────────┐
;│ Check to see if they have NOT flagged any files yet for download, or if │
;│ the user has decided not to download the flagged files. │
;└───────────────────────────────────────────────────────────────────────────┘
IF (EXIST(FLAG_FILE)) THEN
FOPEN 1,FLAG_FILE,O_RD,S_DN
FDEFIN 1
FSEEK 1,0,SEEK_SET(0)
FOR LOOP = 1 TO 100000
FSEEK 1,66,SEEK_CUR(1)
FDREAD FILE_NAME,13
IF (FERR(1)) BREAK
FSEEK 1,50,SEEK_CUR(1)
NEXT
ENDIF
COUNT = LOOP
IF (LOOP != 1) THEN
WAIT
ELSE
IF (EXIST("dlinfo.fps")) delete "dlinfo.pps"
ENDIF
;┌───────────────────────────────────────────────────────────────────────────┐
;│ Display the header of the dispay │
;└───────────────────────────────────────────────────────────────────────────┘
PRINTLN ""
PRINTLN "!|1K|*"
PRINTLN "@CLS@@X0A ┌────────────────────────────────────────────────────────────────────────────┐"
PRINTLN " │ @X09░▒▓█@X1B Statistics for the last 10 files in your batch @X09█▓▒░@X0A │"
PRINTLN " │ │"
PRINTLN " │ @X0BNum Filename Size Date Transfer Time Cost No Time @X0A│"
PRINTLN " │ @X0D──── ──────────── ────────── ──────── ─────────────── ──── ─────── @X0A│"
;┌───────────────────────────────────────────────────────────────────────────┐
;│ Since there are files already flagged for download. Find out how many. │
;│ If there are more then 10 then position display to only display the last │
;│ ten of them. │
;└───────────────────────────────────────────────────────────────────────────┘
; OPEN NEW FILE FOR FPS DLINFO
FOPEN 6,"DLINFO.FPS",O_WR,S_DN
GETUSER
FPUTLN 6,U_NAME()
FPUTLN 6,COUNT-1
FSEEK 1,0,SEEK_SET(0)
IF (COUNT>10) THEN
FOR LOOP = 1 TO (COUNT-10)
FDREAD TEMP,66
IF (FERR(1)) BREAK
TEMP = TRIM(TEMP," ")
FILE_DATE = FILEINF(TEMP,2)
FDREAD FILE_NAME,13
FPUTLN 6,FILE_NAME
FDREAD TEMP,4
TEMP = TRIM(TEMP," ")
TEMP1 = ASC(LEFT(TEMP,1))
IF (LEN(TEMP)>1) TEMP2 =256*ASC(MID(TEMP,2,1))
IF (LEN(TEMP)=3) TEMP3 =65536*ASC(RIGHT(TEMP,1))
FILE_SIZE = TEMP1+TEMP2+TEMP3
LC = FILE_SIZE / FPDIVISOR
TEMP2 = 0
TEMP3 = 0
FDREAD TEMP,3
TEMP = TRIM(TEMP," ")
TEMP1 = ASC(LEFT(TEMP,1))
IF (LEN(TEMP)>1) TEMP2 =256*ASC(MID(TEMP,2,1))
IF (LEN(TEMP)=3) TEMP3 =65536*ASC(RIGHT(TEMP,1))
FILE_SEC = TEMP1+TEMP2+TEMP3
FSEEK 1,9,SEEK_CUR(1)
FDREAD FREE_FILE,1
IF (ASC(FREE_FILE)=1) LC = 0
FPUTLN 6,LC
FDREAD NO_TIME,1
FDREAD TEMP,1
FSEEK 1,31,SEEK_CUR(1)
NEXT
ELSE COUNT = 10
ENDIF
LET Y = COUNT-9
;┌───────────────────────────────────────────────────────────────────────────┐
;│ Display the file name, bytes, and transfer time for all the files flagged │
;└───────────────────────────────────────────────────────────────────────────┘
FOR LOOP= 1 TO COUNT
; FSEEK 1,66,SEEK_CUR(1)
FDREAD TEMP,66
IF (FERR(1)) BREAK
TEMP = TRIM(TEMP," ")
FILE_DATE = FILEINF(TEMP,2)
FDREAD FILE_NAME,13
FPUTLN 6,FILE_NAME
FDREAD TEMP,4
TEMP = TRIM(TEMP," ")
TEMP1 = ASC(LEFT(TEMP,1))
IF (LEN(TEMP)>1) TEMP2 =256*ASC(MID(TEMP,2,1))
IF (LEN(TEMP)=3) TEMP3 =65536*ASC(RIGHT(TEMP,1))
FILE_SIZE = TEMP1+TEMP2+TEMP3
TEMP2 = 0
TEMP3 = 0
FDREAD TEMP,3
TEMP = TRIM(TEMP," ")
TEMP1 = ASC(LEFT(TEMP,1))
IF (LEN(TEMP)>1) TEMP2 =256*ASC(MID(TEMP,2,1))
IF (LEN(TEMP)=3) TEMP3 =65536*ASC(RIGHT(TEMP,1))
FILE_SEC = TEMP1+TEMP2+TEMP3
FSEEK 1,9,SEEK_CUR(1)
FDREAD FREE_FILE,1
FDREAD NO_TIME,1
FDREAD TEMP,1
FSEEK 1,31,SEEK_CUR(1)
FILE_MIN = STRING(S2I(FILE_SEC,10)/60)
FILE_SEC = STRING(S2I(FILE_SEC,10)-(S2I(FILE_MIN,10)*60))
PRINT " │@X0B"+LEFT(" ",5-LEN(Y))+STRING(Y)+LEFT(" ",15-LEN(FILE_NAME))+"@X0F"
PRINT FILE_NAME+LEFT(" ",12-LEN(FILE_SIZE))
LET FPCH = FILE_SIZE
LET FPC = FPCH / FPDIVISOR
LET FP = FPC
IF (FP = "0") THEN
LET FP = "FREE"
LET TOTAL_FREE = TOTAL_FREE + FPCH
ENDIF
PRINT FILE_SIZE+" "
PRINT STRING(FILE_DATE)+LEFT(" ",5-LEN(FILE_MIN))
PRINT FILE_MIN+" @X07min@X0F"+LEFT(" ",3-LEN(STRING(FILE_SEC)))+STRING(FILE_SEC)+" @X07sec"+LEFT(" ",6-LEN(FP))
IF (ASC(FREE_FILE)=1) THEN
PRINT "@X0CFREE"
LET TOTAL_FREE = TOTAL_FREE + FPCH
FPUTLN 6,"0"
ELSE
PRINT "@X0E"+FP
LET TFPC = TFPC + FPC
FPUTLN 6,FP
ENDIF
PRINT " "
IF (ASC(NO_TIME)=1) THEN
PRINT "@X0CY"
ELSE PRINT "@X0C@X0EN"
ENDIF
ANSIPOS 79,5+LOOP
PRINTLN "@X0A│"
ANSIPOS 1,6+LOOP
INC Y
NEXT
;┌────────────────────────────────────────────────────────────────────────────┐
;│ Display with blank lines to fill the screen to ten file placements listed │
;└────────────────────────────────────────────────────────────────────────────┘
:CONT
FOR LOOP = LOOP TO 10
PRINTLN " @X0A│@X0B"+LEFT(" ",5-LEN(Y))+STRING(Y)+" @X0F0 00-00-00 0 @X07min @X0F0 @X07sec @X0A│"
INC Y
NEXT
:BACK
;┌───────────────────────────────────────────────────────────────────────────┐
;│ Display the footer of the dispay │
;└───────────────────────────────────────────────────────────────────────────┘
PRINTLN " │ │"
PRINTLN " │ @X09░▒▓█@X1B Statistics for the ENTIRE batch @X09█▓▒░@X0A │"
PRINTLN " │ @X07Files @X07Size (Bytes) File Points @X07Estimated time @X0F │"
PRINT " │ @X0F@FFILES:3@ @X0F@FBYTES:12@ "
LET FLAGGED_BYTES = S2I(TRIM(SCRTEXT(26,19,12,FALSE)," "),10)
LET MAJOR_TOTAL =((FLAGGED_BYTES - TOTAL_FREE) / FPDIVISOR)
LET TOTAL_COST = TFPC
IF (MAJOR_TOTAL > TFPC) LET TOTAL_COST = MAJOR_TOTAL
PRINT TOTAL_COST+" @X0F"
;┌───────────────────────────────────────────────────────────────────────────┐
;│ Calculate the BATCH transfer time from the BATCH bytes listed on screen │
;│ taking into account local logons and error correcting modems. │
;└───────────────────────────────────────────────────────────────────────────┘
LET FILE_NUM = TRIM(SCRTEXT(12,19,2,FALSE)," ")
LET BAT_TIME = S2I(TRIM(SCRTEXT(26,19,12,FALSE)," "),10)
IF (ONLOCAL()) THEN
SPEED=0.9*(READLINE(PCBDAT(),53)/10)
ELSE
SPEED = CARRIER()/10
IF (ERRCORRECT()) THEN
SPEED = SPEED * 1.05
ELSE SPEED = .96*SPEED
ENDIF
ENDIF
SPEED2 = SPEED*60
BAT_MIN = BAT_TIME/SPEED2
BAT_SEC = BAT_TIME%SPEED
BAT_SEC = BAT_SEC/60
PRINT STRING(BAT_MIN)+" @X07min"+" @X0F"+STRING(BAT_SEC)+" @X07sec@X0A"
ANSIPOS 79,19
PRINTLN "│"
PRINTLN " └────────────────────────────────────────────────────────────────────────────┘"
PRINTLN " @X07Enter @X0Ffilename @X07on line above, or (@X0CENTER@X07) alone to continue"
;┌───────────────────────────────────────────────────────────────────────────┐
;│ Position cursor on the screen and ask for file name. Then stuff it into │
;│ keyboard buffer and exit │
;└───────────────────────────────────────────────────────────────────────────┘
IF (S2I(FILE_NUM,10)>9) FILE_NUM = 9
ANSIPOS 11,6+FILE_NUM
LET FILE_NAME = ""
INPUTSTR "_",file_name,@X07,12,MASK_FILE(),UPCASE
ANSIPOS 1,21
FILE_NAME=TRIM(FILE_NAME," ")
IF (LEN(file_name) = 0) file_name = CHR(13)
FCLOSE 6
KBDSTUFF file_name
:EXIT
END