REM See the WYWTK Index of BBC BASIC Tutorials for more help with BBC BASIC. Many pages give you more than just the code, the way this one does.
REM wywtk.com/prgm/bas/basb-med-tim-1.htm
REM MedTime.BBC- Meditation Timer
REM VERS
PRINT "Hi. Repeat..."
PRINT "Don't press more than one key at any time."
PRINT "To start, press a key BRIEFLY. NOT '.' or ','"
PRINT "Then BRIEFLY press just '.' (or'Q')"
PRINT "Until you've had enough!"
PRINT "(Q TO Quit)"
REPEAT
PRINT "But first set the WAIT time. (about 20 probably right.)"
INPUT delay%
UNTIL delay%>5
PRINT
REM Wait for user to start holding down a key...
REPEAT : REM Start of inner parts
pressed$=INKEY$(2)
UNTIL pressed$><"" AND pressed$><"." AND pressed$><","
REM Now begin main part of program...
REPEAT REM Drives outer loop
REM Start of first pass through inner parts
REPEAT
PRINT"*";
pressed$=INKEY$(2)
WAIT(delay%)
UNTIL pressed$="." OR pressed$=","
REM Done?
IF pressed$="q" OR pressed$="Q" THEN
PRINT
PRINT "Bye"
WAIT(120)
QUIT
ENDIF
REPEAT
PRINT".";
pressed$=INKEY$(2)
WAIT(delay%)
UNTIL (pressed$><"." AND pressed$><"," AND pressed$><"") OR (pressed$="q" OR pressed$="Q")
REM Done?
IF pressed$="q" OR pressed$="Q" THEN
PRINT
PRINT "Bye"
WAIT(120)
QUIT
ENDIF
REM End of inner parts
REM *crude* "Do inner parts again" by copy/paste...
REM========= VVV Second copy of "inner parts" vvv
REPEAT
PRINT"*";
pressed$=INKEY$(2)
WAIT(delay%)
UNTIL pressed$="." OR pressed$=","
REM Done?
IF pressed$="q" OR pressed$="Q" THEN
PRINT
PRINT "Bye"
WAIT(120)
QUIT
ENDIF
REPEAT
PRINT".";
pressed$=INKEY$(2)
WAIT(delay%)
UNTIL (pressed$><"." AND pressed$><"," AND pressed$><"") OR (pressed$="q" OR pressed$="Q")
REM Done?
IF pressed$="q" OR pressed$="Q" THEN
PRINT
PRINT "Bye"
WAIT(120)
QUIT
ENDIF
REM========= ^^^ Second copy of "inner parts" ^^^
PRINT:REM Starts new line of Pressed/Not pressed characters
UNTIL 4=5 REM End of Outer loop.