Zupełnie zapomniałem o tej konstrukcji. :-) Pierwotnie chciałem użyć GOSUB, ale przy kilku IF-ach skończylibyśmy na linii 118. Użycie ON...GOSUB pozbawione jest tej wady, wprowadza elegancje, no i unikamy instrukcji GOTO, która jest u niektórych na cenzurowanym.
10 ? CHR$(125);"LOAD ";CHR$(34);"C:";CHR$(34)
20 SOUND 3,52,14,8:FOR I=0 TO 2000:NEXT I
21 P=53760:SOUND 0,5,14,8:SOUND 1,7,14,8:POKE P+15,43:FOR I=0 TO 255:POKE P+13,PEEK(40960+I):NEXT I
22 SOUND 0,0,0,0:SOUND 1,0,0,0:SOUND 3,0,0,0
30 ? :FOR B=0 TO 4:READ A,C:? CHR$(A);CHR$(253):FOR D=0 TO C:NEXT D:NEXT B:DATA 69,100,82,100,82,0,79,0,82,0
40 DIM A$(1):RESTORE 40:? "READY":FOR I=0 TO 2:READ A$:? A$;:FOR C=0 TO 255:NEXT C:NEXT I:DATA R,U,N
50 ? :? "DeCRUSHing":FOR I=0 TO 255:POKE 53274,PEEK(53770):NEXT I
100 DIM C$(1)
101 ? :? "CASSATE OPERATING SYSTEM 1.2.3":? "2023 BC (C) BY SLMQ"
102 ? :? "YOU'RE SITTING ON STOOL NEAR THE TABLE WITH ATARI 400 AND TAPE RECORDER ON."
103 ? "THROUGH THE WINDOW YOU CAN SEE REAL WORLD. BEAUTIFUL WORLD..."
104 ? "NOW YOU CAN DO:"
105 ? :? "A.MOTOR ON":? "B.MOTOR OFF":? "C.LOAD PROGRAM":? "D.RUN PROGRAM":? "E.MAKE DEMO"
106 ? :? "WHAT NOW";:INPUT C$
108 C=ASC(C$)-64:ON C GOSUB 10000,12000,14000,16000,18000:GOTO 101
110 IF C$<>"X" THEN ? :? "WHAT ARE YOU TALKING ABOUT?":GOTO 101
112 ? "IT IS NOW SAFE TO TURN OFF YOUR COMPUTER":REM HIDDEN FUNCTION ;-)
114 GOTO 114
10000 REM MOTOR ON
11000 RETURN
12000 REM MOTOR OFF
13000 RETURN
14000 REM LOAD PROGRAM
15000 RETURN
16000 REM RUN PROGRAM
17000 RETURN
18000 REM MAKE DEMO
19000 RETURN
32760 REM ---
32761 REM PRIMA APRILIS COMPO 2023 TAPE RECORDER
32762 REM BY MONO, SIKOR, MQ, LIZARD