71 lines
1.1 KiB
Plaintext
71 lines
1.1 KiB
Plaintext
BYTE RTCLOK1=$13
|
|
BYTE RTCLOK2=$14
|
|
BYTE PALNTSC=$D014
|
|
|
|
PROC Wait(CARD frames)
|
|
BYTE lsb=frames,msb=frames+1
|
|
|
|
;wait lsb of frames
|
|
lsb==+RTCLOK2
|
|
WHILE lsb#RTCLOK2 DO OD
|
|
|
|
;wait msb of 256*frames
|
|
WHILE msb>0
|
|
DO
|
|
WHILE lsb=RTCLOK2 DO OD
|
|
WHILE lsb#RTCLOK2 DO OD
|
|
msb==-1
|
|
OD
|
|
RETURN
|
|
|
|
CARD FUNC GetFrame()
|
|
CARD res
|
|
BYTE lsb=res,msb=res+1
|
|
|
|
lsb=RTCLOK2
|
|
msb=RTCLOK1
|
|
RETURN (res)
|
|
|
|
CARD FUNC MsToFrames(CARD ms)
|
|
CARD res
|
|
|
|
IF PALNTSC=15 THEN
|
|
res=ms/60
|
|
ELSE
|
|
res=ms/50
|
|
FI
|
|
RETURN (res)
|
|
|
|
CARD FUNC FramesToMs(CARD frames)
|
|
CARD res
|
|
|
|
IF PALNTSC=15 THEN
|
|
res=frames*60
|
|
ELSE
|
|
res=frames*50
|
|
FI
|
|
RETURN (res)
|
|
|
|
PROC Main()
|
|
CARD ARRAY data=[1 5 10 50 100 500]
|
|
CARD beg,end,diff,diffMs,delay,delayMs
|
|
BYTE i
|
|
|
|
FOR i=0 TO 5
|
|
DO
|
|
delay=data(i)
|
|
delayMs=FramesToMs(delay)
|
|
PrintF("Wait %U frames / %U ms...%E",delay,delayMs)
|
|
|
|
beg=GetFrame()
|
|
Wait(delay)
|
|
end=GetFrame()
|
|
diff=end-beg
|
|
diffMs=FramesToMs(diff)
|
|
|
|
PrintF("Frame number at begin %U%E",beg)
|
|
PrintF("Frame number at end %U%E",end)
|
|
PrintF("Waited %U-%U=%U frames / %U ms%E%E",end,beg,diff,diffMs)
|
|
OD
|
|
RETURN
|