hbas/MATTEO.BAS

223 lines
4.0 KiB
QBasic
Raw Permalink Blame History

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