0 'THE METER (C)1989 Walter Perry: LastUpdate 4/10/89: The author grants permission to distribute THE METER if line 0 is included. If you find the program useful send $20 for complete information to Walter Perry 1610 Winter Street S.E. Salem Or 97302. 10 MAXFILES=1:CLEAR2000:DIMCO$(20):DIMCN$(20):DIMBH(20):DIMBM(20):DIMEH(20):DIMEM(20):DIMTT(20):DIMAM$(20):DIMPM$(20) 20 N=1:P=1:CL$=STRING$(119,32):BH(1)=VAL(LEFT$(TIME$,2)):BM(1)=VAL(MID$(TIME$,4,2)):MO=VAL(LEFT$(DATE$,2)):DA=VAL(MID$(DATE$,4,2)):YR=VAL(RIGHT$(DATE$,2)):NO$=CHR$(27)+"q":RO$=CHR$(27)+"p" 30 NA$="YOUR NAME" 40 CLS:PRINT@90,"LOADING THE METER...";:ONERRORGOTO60:OPEN"TIME.DO"FORINPUTAS1:INPUT#1,N,NA$,MO,DA,YR,GT:FORA=1TON:INPUT#1,BH(A),BM(A),AM$(A),EH(A),EM(A),PM$(A),TT(A),CN$(A),CO$(A) 50 NEXTA:CLOSE:P=N:GOSUB480:GOTO90 60 IFERR=52GOTO80 70 PRINT"ERR=";ERR;"ERL=";ERL 80 CLS:GOSUB330:GOSUB480 90 PRINT@200," 1 NEXT PAGE 2 FILE 3 DESCRIPTION ";:PRINT@240," 4 TIME MENU 5 PICK PAGE 6 ERASE ":PRINT@280," 7 STOP METER 8 EXIT 9 PRINT 10 NAME "; 100 PRINT@275,"";:INPUT"";I$:I=VAL(I$):IFI>0ANDI<18THEN:A=VAL(LEFT$(TIME$,2)):B=VAL(MID$(TIME$,4,2)):ONIGOSUB120,140,160,190,370,400,250,420,430,470,200,220,230,250,260,270,290,90:GOTO90 110 PRINT@200,CL$;:PRINT@200," PLEASE PICK A NUMBER BETWEEN 1 AND 18";:PRINT@240,"";:INPUT"PRESS ANY KEY TO RETURN";A$:GOTO90 120 P=N:IFEH(P)>0GOTO130ELSEEH(P)=A:EM(P)=B:GOSUB350:GOSUB300:IFBH(P)>0ORTT(P)>0GOTO130ELSEBH(P)=A:BM(P)=B:GOSUB330:GOSUB300 130 N=N+1:P=N:BH(P)=A:BM(P)=B:EH=0:GOSUB330:GOSUB480:RETURN 140 PRINT@200,CL$;:PRINT@200,"FILE NAME OR NUMBER (20 CHAR) ":INPUTCN$(P):PRINT@59,STRING$(19,32):PRINT@59,CN$(P):PRINT@200,CL$;:IFN>1THENFORS=1TO(N-1):IFCN$(P)=CN$(S)ANDP<>SGOTO150ELSENEXTS:RETURNELSERETURN 150 PRINT@200,CL$;:PRINT@200,"TIME ALREADY CHARGED TO FILE";:PRINT@240," ADD TIME TO PAGE #";S;:INPUT"(Y/N) ";A$:IFA$="Y"ORA$="y"THENP=S:N=N-1:GOSUB480:GOSUB270:RETURN:ELSERETURN 160 PRINT@200,CL$;:PRINT@160,"";:LINEINPUT"DESCRIPTION (55 CHAR)";CO$(P) 170 IFLEN(CO$(P))<55THENPRINT@131,"":PRINTSTRING$(59,32):PRINT@131,CO$(P):RETURN 180 PRINT@160,CL$;:PRINT@160,"";:LINEINPUT"DESCRIPTION TOO LONG, TRY AGAIN";CO$(P):GOTO170 190 PRINT@200," 11 BEGIN TIME 12 BEGIN NOW 13 END TIME ";:PRINT@240," 14 END NOW 15 TOTAL TIME ";:PRINT@280," 16 ADD TIME 17 CHANGE DATE 18 GOBACK ";:GOTO100 200 PRINT@200,CL$;:PRINT@200," ";:INPUT"BEGIN HOUR,BEGIN MINUTE,(A)M OR (P)M: ";BH(P),BM(P),AM$(P):IFAM$(P)="P"THENBH=BH(P)+12:ELSEBH=BH(P) 210 GOSUB340:GOSUB300:RETURN 220 BH(P)=A:BM(P)=B:GOSUB330:RETURN 230 PRINT@200,CL$;:PRINT@200,"";:INPUT"END HOUR , END MINUTES, (A)M OR (P)M : ";EH(P),EM(P),PM$(P):IFPM$(P)="P"THENEH=EH(P)+12ELSEEH=EH(P) 240 GOSUB360:GOSUB300:RETURN 250 EH(P)=A:EM(P)=B:GOSUB350:GOSUB300:RETURN 260 PRINT@200,CL$;:PRINT@200,"":INPUT" Total Time";TT(P):PRINT@111,USING"##.#";TT(P):GOSUB320:EH(P)=A:EM(P)=B:GOSUB350:RETURN 270 PRINT@200,CL$;:PRINT@240," ";:INPUT"ADD TIME TO THIS FILE? Y/N ";A$:IFA$<>"Y"ANDA$<>"y"THENRETURN 280 NH=A:NM=B:NT=(60*NH+NM):TT=TT(P)*60:BT=NT-TT:BH(P)=INT(BT/60):BM(P)=BT-(BH(P)*60):GOSUB330:EH(P)=0:EM(P)=0:GOSUB350:RETURN 290 PRINT@200,CL$;:PRINT@200,"";:INPUT"MONTH, DAY, YEAR:"; MO,DA,YR: PRINT@46, USING "##/##/##";MO; DA; YR: RETURN 300 TT(P)= (INT( 10*(((60*(EH -BH)) + EM(P) -BM(P))/60 + 0.05)))/10: IF TT(P)<0 THENTT(P)=0 310 PRINT@ 111,"":PRINT @111, USING "##.#"; TT(P):GOSUB320: RETURN 320 GT=0:FOR X=0 TO N: GT=GT+TT(X+1): NEXTX: PRINT @116,USING "##.#";GT: RETURN 330 BH=BH(P): IF BH(P)=0 THENAM$(P)=""ELSEIF BH(P)>12 THENBH(P)=BH(P)-12:AM$(P)="P":ELSEAM$(P)="A" 340 PRINT@87,USING"##:##\\";BH(P);BM(P);AM$(P): RETURN 350 EH=EH(P):IF EH(P)=0 THENPM$(P)="" ELSEIF EH(P)>12 THENEH(P)=EH(P)-12:PM$(P)="P":ELSEPM$(P)="A" 360 PRINT@98,USING"##:##\\";EH(P);EM(P);PM$(P): RETURN 370 PRINT @200,CL$; 380 PRINT @240,"";: INPUT "SELECT THE NUMBER OF THE PAGE"; R: IF R>N THENPRINT @ 280,"ONLY";N; "PAGES EXIST, PLEASE PICK AGAIN";: GOTO380 390 P=R: GOSUB480: RETURN 400 PRINT@200,CL$;: PRINT@200,"ERASE ALL VALUES ON ALL PAGES (Y/N)";:INPUT A$:IF A$<>"Y" AND A$<>"y" THENGOTO410:ELSECLEAR: KILL"TIME.DO": GOTO10 410 PRINT @240,"";:INPUT"ERASE VALUES FOR THIS PAGE (Y/N)";A$:IF A$="Y" OR A$="y" THENBH(P)=A:BM(P)=B:EH(P)=0:EM(P)=0:TT(P)=0:CN$(P)="":CO$(P)="":GOSUB330: GOSUB480:RETURN:ELSERETURN 420 CLOSE: OPEN "TIME.DO" FOR OUTPUT AS 1:PRINT#1, N;",";NA$;",";MO;",";DA;",";YR;",";GT: FOR X=1 TO N :PRINT#1,BH(X);",";BM(X);",";AM$(X);",";EH(X);",";EM(X);",";PM$(X);",";TT(X);",";CN$(X);",";CO$(X): NEXT X :MENU 430 LPRINT:LPRINT: LPRINT"";NA$;: LPRINT USING "##/##/##"; MO;DA;YR: LPRINT:LPRINT: LPRINT STRING$(80,"-"):LPRINT 440 LPRINT " FILE NUMBER TIME DESCRIPTION": LPRINT " ----------- ---- -----------" :LPRINT: LPRINT 450 FOR A=1 TO N: LPRINT USING " \ \ ##.# ";CN$(A);TT(A);: LPRINT CO$(A): LPRINT: TT=TT+ TT(A) :NEXT A 460 LPRINT STRING$(80,"-"): LPRINT:LPRINT USING" TOTAL TIME ##.#"; TT: TT=0: LPRINT:LPRINT: RETURN 470 PRINT @200,CL$;: PRINT@200,"NAME:":INPUT NA$: PRINT @16, STRING$(19,32);:PRINT@16,NA$ : RETURN 480 PRINT@0, CL$;: PRINT RO$:PRINT@0,"#": PRINT @ 10 ,"NAME":PRINT @40,"DATE":PRINT @ 55, "FILE":PRINT @80,"BEGIN":PRINT @ 94,"END":PRINT @105,"TOTALS":PRINT @120,"DESCRIPTION" 490 PRINTNO$:PRINT@3,P:PRINT@16,NA$:PRINT@116,"":PRINT@116,USING"##.#";GT:PRINT@46,USING "##/##/##";MO;DA;YR:PRINT @59,STRING$(19,32); 500 PRINT@59,CN$(P):PRINT @87,"":GOSUB340:PRINT @99,"": GOSUB360 510 PRINT @111,"": PRINT@ 111,USING"##.#";TT(P):PRINT @131,STRING$(55,32): PRINT @131, CO$(P): RETURN