Add automatic calibration for timing.
This commit is contained in:
parent
c8a3cc7758
commit
6dba62943c
59
MATTEO.BAS
59
MATTEO.BAS
@ -1,9 +1,23 @@
|
|||||||
|
DECLARE SUB CALIBRATION ()
|
||||||
|
DECLARE SUB BUSYDELAY (ms!)
|
||||||
DECLARE SUB RAINBOW ()
|
DECLARE SUB RAINBOW ()
|
||||||
DECLARE SUB CENTER (text$)
|
DECLARE SUB CENTER (text$)
|
||||||
DECLARE SUB SETUP ()
|
DECLARE SUB SETUP ()
|
||||||
DECLARE SUB LOADBAR ()
|
DECLARE SUB LOADBAR ()
|
||||||
DECLARE SUB SONG ()
|
DECLARE SUB SONG ()
|
||||||
|
|
||||||
|
KEY(3) ON
|
||||||
|
ON KEY(3) GOSUB Terminate
|
||||||
|
|
||||||
CLS
|
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 SETUP
|
||||||
CALL SONG
|
CALL SONG
|
||||||
@ -13,11 +27,46 @@ PRINT "da GiulioF e giomba"
|
|||||||
LOCATE 13, 60
|
LOCATE 13, 60
|
||||||
PRINT " 23 marzo 2024"
|
PRINT " 23 marzo 2024"
|
||||||
|
|
||||||
|
LOCATE 4, 1
|
||||||
|
PRINT SPACE$(80)
|
||||||
|
LOCATE 4
|
||||||
|
CENTER "Premere F3 per uscire"
|
||||||
|
|
||||||
DO
|
DO
|
||||||
CALL RAINBOW
|
CALL RAINBOW
|
||||||
IF NOT INKEY$ = "" THEN EXIT DO
|
|
||||||
LOOP
|
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$)
|
SUB CENTER (text$)
|
||||||
|
|
||||||
@ -36,7 +85,7 @@ FOR col% = 1 TO 30
|
|||||||
COLOR 4
|
COLOR 4
|
||||||
PRINT CHR$(c);
|
PRINT CHR$(c);
|
||||||
NEXT row%
|
NEXT row%
|
||||||
FOR d = 1 TO 10000: NEXT d
|
CALL BUSYDELAY(100)
|
||||||
FOR row% = 10 TO 14
|
FOR row% = 10 TO 14
|
||||||
c = SCREEN(row%, col%)
|
c = SCREEN(row%, col%)
|
||||||
LOCATE row%, col%
|
LOCATE row%, col%
|
||||||
@ -70,16 +119,16 @@ NEXT i
|
|||||||
FOR i = 19 TO 59 STEP 1
|
FOR i = 19 TO 59 STEP 1
|
||||||
LOCATE 20, i + 1
|
LOCATE 20, i + 1
|
||||||
PRINT CHR$(&HDB)
|
PRINT CHR$(&HDB)
|
||||||
FOR d = 0 TO 2000: NEXT d
|
CALL BUSYDELAY(100)
|
||||||
NEXT i
|
NEXT i
|
||||||
|
|
||||||
SLEEP 1
|
CALL BUSYDELAY(1000)
|
||||||
|
|
||||||
PRINT
|
PRINT
|
||||||
CENTER "come sono burlone"
|
CENTER "come sono burlone"
|
||||||
CENTER CHR$(1)
|
CENTER CHR$(1)
|
||||||
|
|
||||||
SLEEP 2
|
CALL BUSYDELAY(2000)
|
||||||
|
|
||||||
END SUB
|
END SUB
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user