2002年3月26日 アップロード 関谷KPCトップページへ 作者へのメッセージ

timer program for 発表会 timer.bas ソースプログラム

10000 ' timer program for 卒研発表会  1994.2.14,15, 2002.2.22 kpc 関谷順太
10010 ' TIMER.BAS    TIME DISPLAY AND  BELL 3 TIMES ,RECORD TIMES
10020 '    TS: 発表時間(分),  TP:まとめ時間(発表時間の後半)
10030 '    TQ: 質疑時間(分)
10040 '    BELL  1:TS-TP, 2:TS, 3:TS+TQ   (TS+TQ=持ち時間-0.5)
10042 ' File needs "times.dat" for records times
10043 '	2001.10.5 中間発表会用
10044 '	2002.2.22 発表会用
10050 'TS=2: TQ=1: TP=1 '  持ち時 3分の時の例
10052 'TS=4: TQ=1.5: TP=1 '  持ち時間 6分の時の例
10053 'NIN=2: TS=10: TQ=2: TP=2'  持ち時間12 の例
10054 'NIN=1: TS=5: TQ=2:TP=1'  持ち時間7 分の時の例
10055 ' NIN=1: TS=.5: TQ=.3: TP=.1'  持ち時間2.5 分の時の例
10056 'NIN=1: TS1=10: TQ=5: TP1=3'  持ち時間 一人10 分+質疑は全体で5分の時の例
10057  NIN=1: TS1=2: TQ=1: TP1=1'  持ち時間 一人2 分+質疑は全体で1分の時の例
10058  TS=TS1*NIN:  TP=TP1*NIN'  持ち時間 一人TS1 分、TP1分の時の例
10059 '
10060 cls: LOCATE 0,4: INPUT "開始プログラムNO. >";PNO
10062 GOSUB *NEXTP     '  next speech wait
10063 ON KEY GOSUB *NEXTP,*START, *QASTART, *QAEND, *kirikae, *ENDP
10070 FOR I=1 TO 6: KEY(I) ON: NEXT I
10110 '
10111 TB1=82800!: TB2=82800!:TB3=82800!:BSW=9
10112 TSS=60*TS: TTS=60*(TS+TQ)
10120 '
10130 CLS
10140 PRINT "TIMER PROGRAM   PF1:Prog Number Out  , PF2:Start  , PF3:QA_Start"
10150 PRINT " PF4:QA End     PF5:切替(1-2-3-4), PF6:All Finished"
10151 LOCATE 0,2: PRINT   "人数: "; NIN;"  発表時間(分): "; TS;
10152 PRINT   "   質疑時間(分): "; TQ
10153 GOSUB *NEXTP: 'LOCATE 0,4: PRINT   "プログラムNo.=>"; PNO

10160 '
10170 OPEN "TIMES.DAT" FOR APPEND AS #1
10180 *LOOP
10190   LOCATE 0,13: PRINT "現在時刻        "; TIME$
10200   TM$=TIME$: GOSUB *TMCNV: TIMEC=TIME: print timec; tb1
10205   IF BSW<4 AND WAITST=0 THEN  TM=TIME-TIMES: LOCATE 0,15: PRINT USING "残り時間(秒)発表:####    質疑:####";TSS-TM,TTS-TM:MIN=INT(TM/60):SEC=TM-MIN*60:LOCATE 0,17:PRINT USING"発表開始から: ##分 ##秒";MIN,SEC
10210  'LOCATE 0,4: PRINT   "プログラムNo.=>"; PNO
10220   IF TIMEC=>TB1 AND BSW=0 THEN BSW=1: GOSUB *BELL1: GOTO  10250
10230   IF TIMEC=>TB2 AND BSW=1 THEN BSW=2: GOSUB *BELL2: GOTO  10250
10240   IF TIMEC=>TB3 AND BSW=2 THEN BSW=3: GOSUB *BELL3: GOTO  10250
10250 GOTO *LOOP
10260 '
10270 *NEXTP
10280 CLS: TM$=TIME$
10290 PRINT "TIMER PROGRAM   PF1:Prog Number Out , PF2:Start  , PF3:QA_Start"
10300 PRINT "  PF4:QA End     PF5:切替(1-2-3-4),   PF6:All Finished"
10310 LOCATE 0,4: PRINT   "プログラムNo.=>"; PNO
10311 LOCATE 0,2: PRINT   "人数: "; NIN;"  発表時間(分): "; TS;
10312 PRINT   "  質疑時間(分): "; TQ
10320 TB1=82800!: TB2=82800!:TB3=82800!:BSW=9
10330 WAITST=1: RETURN
10340 '
10350 *START
10355 WAITST=0: BSW=0: QASFLG=0
10360 'TIMES=TIME:TM$=TIME$: TIMEQ=TIMES: TM=TIMES: GOSUB *TMCNV
10361 TM$=TIME$: GOSUB *TMCNV: TIMES=TIME: TM=TIMES: 
10370 PRINT #1," ": PRINT #1,USING "No.= ## START TIME  @ ";PNO,TM$;
10380 LOCATE 0,6: PRINT "開始時刻        ";TM$
10390 TM=TIMES+TS*60:TB2=TM: GOSUB *TMCNV2: TB2$=TM$
10400 LOCATE 0,8: PRINT "発表終了予定時刻";TM$
10410 TM=TIMES+(TS-TP)*60: TB1=TM: GOSUB *TMCNV2: TB1$=TM$
10420 TM=TIMES+(TS+TQ)*60: TB3=TM: GOSUB *TMCNV2: TB3$=TM$
10430 LOCATE 0,10: PRINT "質疑終了予定時刻";TM$
10435 TIME=TIME-1
10436  LOCATE 0,4: PRINT   "プログラムNo.=>"; PNO
10440 RETURN
10450 '
10460 *BELL1
10470   BEEP 1: W=0
10480   FOR I=1 TO  500
10490     W=W+1
10500   NEXT I
10510   BEEP 0
10520 RETURN
10530 '
10540 *BELL2
10550   GOSUB *BELL1:W1=0
10560   FOR I1=1 TO  400
10570     W1=W1+1
10580   NEXT I1
10590   GOSUB *BELL1
10600 RETURN
10610 '
10620 *BELL3
10630  GOSUB *BELL2:  W2=0:' print "bell31"
10640  FOR I2=1 TO 900
10650    W2=W2+1
10660  NEXT I2
10680  GOSUB *BELL1: W1=0:' print "bell32"
10690 RETURN
10700 '
10710 *QASTART
10720   TM$=TIME$:TSA$=TM$:GOSUB *TMCNV2:TIMEQ=TIME:TM=TIMEQ-TIMES: GOSUB *TMCNV2:  PRINT #1,USING " TSA:@ ";TM$;
10721   LOCATE 30,8: PRINT "TSA: ";TSA$
10730   RETURN
10740 *QAEND
10741   TM$=TIME$:TQA$=TM$:GOSUB *TMCNV2:TIMEE=TIME:TM=TIMEE-TIMEQ: GOSUB *TMCNV2:  PRINT #1,USING " TSQ:@ ";TM$;
10751   LOCATE 30,10: PRINT "TQA: ";TQA$
10752   PNO=PNO+1: GOSUB *NEXTP
10760   RETURN
10770 *TMCNV	' TM$ TO TIME (in sec)
10780   H$=LEFT$(TM$,2): HH=VAL(H$)
10790   TMW$=RIGHT$(TM$,5): M$=LEFT$(TMW$,2): MM=VAL(M$)
10800   TMW$=RIGHT$(TMW$,2): SS=VAL(TMW$)
10810   TIME=HH*3600+MM*60+SS ' time to tm
10820   RETURN
10825 *TMCNV2
10830   HH=INT(TM/3600):W$=STR$(HH) :GOSUB *VLAC: H$=WV$
10831   MM=INT((TM-HH*3600)/60): W$=STR$(MM):GOSUB *VLAC: M$=WV$
10832   SS=INT(TM-HH*3600-MM*60):W$=STR$(SS):GOSUB *VLAC: S$=WV$
10840   TM$="  :  :  ": MID$(TM$,1,2)=H$: MID$(TM$,4,2)=M$: MID$(TM$,7,2)=S$
10850   RETURN
10855 *VLAC
10856        WV$="   ": IF W$<>"0" THEN WV$=RIGHT$(W$,2) ELSE WV$=W$
10857   RETURN
10860 *ENDP
10870   CLOSE #1
10880   KEY(1) OFF:KEY(2) OFF: KEY(3) OFF:  KEY(4) OFF: KEY(5) OFF
10890   STOP
10900 *kirikae
10910  nin = nin +1:if nin > 4 then nin =1
10914  TS=TS1*NIN: TP=TP1*NIN
10921  LOCATE 0,2: print "                  ": LOCATE 0,2:PRINT   "人数: "; NIN;"  発表時間(分): "; TS;
10222  PRINT   "  質疑時間(分): "; TQ
10930  TSS=60*TS: TTS=60*(TS+TQ)
10940  RETURN