Files

223 lines
4.0 KiB
QBasic
Raw Permalink Normal View History

2024-03-17 22:18:40 +01:00
DECLARE SUB CALIBRATION ()
DECLARE SUB BUSYDELAY (ms!)
2024-03-17 21:10:56 +01:00
DECLARE SUB RAINBOW ()
DECLARE SUB CENTER (text$)
DECLARE SUB SETUP ()
DECLARE SUB LOADBAR ()
DECLARE SUB SONG ()
2024-03-17 22:18:40 +01:00
KEY(3) ON
ON KEY(3) GOSUB Terminate
2024-03-17 21:10:56 +01:00
CLS
2024-03-17 22:18:40 +01:00
REM Numero di cicli nel ritardo con attesa attiva
DIM SHARED timecycles AS LONG
timecycles = 100
REM Costante temporale per ritardo di 1ms (calibrazione)
DIM SHARED timeconst AS INTEGER
CALL CALIBRATION
CALL BUSYDELAY(1000)
2024-03-17 21:10:56 +01:00
CALL SETUP
CALL SONG
LOCATE 12, 60
PRINT "da GiulioF e giomba"
LOCATE 13, 60
PRINT " 23 marzo 2024"
2024-03-17 22:18:40 +01:00
LOCATE 4, 1
PRINT SPACE$(80)
LOCATE 4
CENTER "Premere F3 per uscire"
2024-03-17 21:10:56 +01:00
DO
CALL RAINBOW
LOOP
2024-03-17 22:18:40 +01:00
Terminate:
END
SUB BUSYDELAY (ms)
FOR i = 1 TO ms: FOR d = 1 TO timeconst: NEXT d: NEXT i
END SUB
SUB CALIBRATION
REM Ritorna numero di cicli da eseguire per attesa di 1ms
PRINT "Calibrazione velocit… processore in corso..."
DIM delay AS LONG
diff = 0
WHILE diff < 1
PRINT ".";
timecycles = timecycles * 2
tstart = TIMER
FOR delay = 1 TO timecycles: NEXT delay
tend = TIMER
diff = tend - tstart
WEND
timeconst = .001 * timecycles / diff
PRINT timeconst; " cicli"
END SUB
2024-03-17 21:10:56 +01:00
SUB CENTER (text$)
col% = 40 - LEN(text$) / 2
LOCATE CSRLIN, col%
PRINT text$
END SUB
SUB RAINBOW
FOR col% = 1 TO 30
FOR row% = 10 TO 14
c = SCREEN(row%, col%)
LOCATE row%, col%
COLOR 4
PRINT CHR$(c);
NEXT row%
2024-03-17 22:18:40 +01:00
CALL BUSYDELAY(100)
2024-03-17 21:10:56 +01:00
FOR row% = 10 TO 14
c = SCREEN(row%, col%)
LOCATE row%, col%
COLOR 7
PRINT CHR$(c);
NEXT row%
NEXT col%
END SUB
SUB SETUP
COLOR 15, 1
CLS
PRINT
CENTER "Benvenuto nel wizard di auguri per MATTEO.BIN"
PRINT
COLOR 7, 1
CENTER "Premere un tasto per continuare"
WHILE INKEY$ = "": WEND
LOCATE 18
CENTER "Formattazione C: in corso"
FOR i = 19 TO 59 STEP 1
LOCATE 20, i + 1
PRINT CHR$(&HB0);
NEXT i
FOR i = 19 TO 59 STEP 1
LOCATE 20, i + 1
PRINT CHR$(&HDB)
2024-03-17 22:18:40 +01:00
CALL BUSYDELAY(100)
2024-03-17 21:10:56 +01:00
NEXT i
2024-03-17 22:18:40 +01:00
CALL BUSYDELAY(1000)
2024-03-17 21:10:56 +01:00
PRINT
CENTER "come sono burlone"
CENTER CHR$(1)
2024-03-17 22:18:40 +01:00
CALL BUSYDELAY(2000)
2024-03-17 21:10:56 +01:00
END SUB
SUB SONG
REM Storia di "Tanti Auguri"
REM Ho cercato in rete lo spartito di "Tanti auguri"
REM e sono capitato su un sito che mi mostrava
REM solo una parte dello spartito.
REM Per avere tutto lo spartito, mi sarei dovuto
REM registrare, regalando la mia email e chiss…
REM cos'altro.
REM L per l per• non me ne sono accorto, perci•
REM ho ingenuamente iniziato a trascrivere lo spartito.
REM Quando mi sono accorto che mancava un pezzo,
REM mi sono fermato, ho inveito contro quel sito,
REM e in pi—, quando sono andato ad ascoltare ci•
REM che avevo trascritto, le prime note avevano
REM un tempo completamente sbagliato!
REM Dunque, ho riesumato il "Carillon" dei signori
REM Leone e Mangialardo, pagina 101, e ho
REM trascritto la musica che persino un libro
REM per bambini Š in grado di fare meglio di
REM un blasonato sito di spartiti su Internet.
REM Comunque, il BASIC prende le durate delle note
REM al contrario, e alla fine, ci ho messo comunque
REM un quarto d'ora solo per far tornare ammodo
REM il tempo sincopato.
LOCATE 10
PLAY "L5 O3 D"
PRINT "TAN";
PLAY "L16 O3 D"
PRINT "TI AU";
PLAY "L4 O3 E"
PRINT "GU";
PLAY "L4 O3 D"
PRINT "RI ";
PLAY "L4 O3 G"
PRINT "A ";
PLAY "L2 O3 F#"
PRINT "TE"
PRINT SPACE$(10);
PLAY "L5 O3 D"
PRINT "TAN";
PLAY "L16 O3 D"
PRINT "TI AU";
PLAY "L4 O3 E"
PRINT "GU";
PLAY "L4 O3 D"
PRINT "RI ";
PLAY "L4 O3 A"
PRINT "A ";
PLAY "L2 O3 G"
PRINT "TE"
PRINT
PLAY "L5 O3 D"
PRINT "TAN";
PLAY "L16 O3 D"
PRINT "TI AU";
PLAY "L4 O4 D"
PRINT "GU";
PLAY "L4 O3 B"
PRINT "RI A ";
PLAY "L4 O3 G"
PRINT "MAT";
PLAY "L4 O3 F#"
PRINT "TE";
PLAY "L2 O3 E"
PRINT "O"
PRINT SPACE$(10);
PLAY "L5 O4 C"
PRINT "TAN";
PLAY "L16 O4 C"
PRINT "TI AU";
PLAY "L4 O3 B"
PRINT "GU";
PLAY "L4 O3 G"
PRINT "RI ";
PLAY "L4 O3 A"
PRINT "A ";
PLAY "L2 O3 G"
PRINT "TE!"
END SUB