9 'setup screen 10 CLS 11 PRINT"The date is ." 12 PRINT"The time is ." 14 LOCATE 0,3 15 PRINT"[exit ][change][redraw] "; 29 'test buttons. the touch buttons are mapped to keycodes 240-255 30 GOSUB 500 35 K=ASC(INKEY$) 40 ON K-251 GOTO 60,100,10 45 GOTO 30 59 'exit 60 CLS 65 PRINT"Bye!" 70 END 99 'date set menu 100 LOCATE 0,3 105 PRINT"change? [date ][time ][cancel]" 110 GOSUB 500 114 'debounce keypress, in theory 115 K=ASC(INKEY$) 116 IF ASC(INKEY$)<>0 GOTO 116 ELSE 120 120 ON K-252 GOTO 200,300,30 125 GOTO 110 195 'set date 200 PMAX=9999 205 PSTR$="year" 210 PVAL$=RIGHT$(DATE$,4) 215 GOSUB 600 220 NY$=PVAL$ 225 NY=VAL(NY$) 230 PMAX=12 235 PSTR$="month" 240 PVAL$=LEFT$(DATE$,2) 245 GOSUB 600 250 NM$=PVAL$ 255 NM=VAL(NM$) 260 IF NM=2 AND NY MOD 4=0 AND NY MOD 100<>0 THEN PMAX=29 ELSE 400 265 PSTR$="day" 270 PVAL$=MID$(DATE$,4,2) 275 GOSUB 600 280 DATE$=NM$+"-"+PVAL$+"-"+NY$ 285 GOTO 10 299 'set time 300 PMAX=23 305 PSTR$="hour" 310 PVAL$=LEFT$(TIME$,2) 315 GOSUB 600 320 NH$=PVAL$ 325 PMAX=59 330 PSTR$="minute" 335 PVAL$=MID$(TIME$,4,2) 340 GOSUB 600 345 NT$=NH$+":"+PVAL$ 350 LOCATE 0,3 355 PRINT "[set time to ";NT$;" ][cancel]"; 360 GOSUB 500 365 K=ASC(INKEY$) 370 IF K<252 GOTO 360 ELSE IF K<>255 GOTO 375 ELSE 100 375 TIME$=NT$ 380 GOTO 10 399 'days in month 400 RESTORE 430 405 FOR I=1 TO NM 410 READ PMAX 415 NEXT 420 GOTO 265 430 DATA 31,28,31,30,31,30,31,31,30,31,30,31 499 'print time 500 LOCATE 12,0 510 PRINT DATE$ 515 LOCATE 12,1 520 PRINT TIME$ 525 RETURN 598 'prompting routine 599 PMAX=max val, PSTR$=prompt, PVAL$=result 600 LOCATE 0,3:PRINT" ";:LOCATE 0,0 605 LOCATE 0,3:PRINT"set ";PSTR$;" ( 1 -";PMAX;")> ";PVAL$;"_"; 610 GOSUB 500 615 K=ASC(INKEY$) 620 IF K=13 AND VAL(PVAL$)<>0 GOTO 660 ELSE IF K=8 GOTO 625 ELSE IF K>=48 AND K<58 GOTO 640 ELSE 610 624 'backspace 625 PVAL$=LEFT$(PVAL$,LEN(PVAL$)-1) 630 GOTO 600 639 'digits. allow leading 0s, don't allow value >PMAX 640 NPV$=PVAL$+CHR$(K) 645 NPV=VAL(NPV$) 650 IF (NPV=0 AND K<>48) OR NPV>PMAX GOTO 610 ELSE PVAL$=NPV$:GOTO 600 659 'EXE=submit 660 PLEN=LEN(STR$(PMAX))-1 664 'truncate or add leading 0s 665 IF LEN(PVAL$)0 GOTO 670 ELSE RETURN