223 lines
4.0 KiB
QBasic
223 lines
4.0 KiB
QBasic
DECLARE SUB CALIBRATION ()
|
||
DECLARE SUB BUSYDELAY (ms!)
|
||
DECLARE SUB RAINBOW ()
|
||
DECLARE SUB CENTER (text$)
|
||
DECLARE SUB SETUP ()
|
||
DECLARE SUB LOADBAR ()
|
||
DECLARE SUB SONG ()
|
||
|
||
KEY(3) ON
|
||
ON KEY(3) GOSUB Terminate
|
||
|
||
CLS
|
||
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)
|
||
|
||
CALL SETUP
|
||
CALL SONG
|
||
|
||
LOCATE 12, 60
|
||
PRINT "da GiulioF e giomba"
|
||
LOCATE 13, 60
|
||
PRINT " 23 marzo 2024"
|
||
|
||
LOCATE 4, 1
|
||
PRINT SPACE$(80)
|
||
LOCATE 4
|
||
CENTER "Premere F3 per uscire"
|
||
|
||
DO
|
||
CALL RAINBOW
|
||
LOOP
|
||
|
||
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
|
||
|
||
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%
|
||
CALL BUSYDELAY(100)
|
||
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)
|
||
CALL BUSYDELAY(100)
|
||
NEXT i
|
||
|
||
CALL BUSYDELAY(1000)
|
||
|
||
PRINT
|
||
CENTER "come sono burlone"
|
||
CENTER CHR$(1)
|
||
|
||
CALL BUSYDELAY(2000)
|
||
|
||
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
|
||
|