home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Datafile PD-CD 1B
/
DATAFILE_PDCD1B.iso
/
_pocketbk
/
pocketbook
/
003
/
timer_zip
/
TIMER.OPL
< prev
next >
Wrap
Text File
|
1992-06-27
|
2KB
|
115 lines
APP timer
type 0
icon "\opd\timer"
ENDA
PROC timer:
global mcb% rem handle of control block
rem filled in by ioopen
local min& rem minutes delay required
local secs& rem equivalent in seconds
local i% rem beep counter
local lim% rem limit number beeps
local s1% rem previous seconds value
local s% rem current value of time in seconds
local val1%(1)
local val2%(1)
local val3%(1)
local val4%(1)
val1%(1)=$30+(40*256)
val2%(1)=$30+(40*256)+(1*64)
val3%(1)=$30+(40*256)+(2*64)
val4%(1)=$30+(40*256)+(3*64)
InstMus:
lim%=30
dinit"Countdown Timer"
min&=5
dlong min&,"Minutes",0,10
dialog
statuswin on
screen 30,9,1,1
gsetwin 0,0,179,79
secs&=60*min&
s1%=second rem get the seconds now
at 3,3 :print"Mike Newman's Timer Vn. 1.0"
at 3,5 :print "Countdown time:-"
at 23,5 :print gen$(secs&/60,-2);"m"
at 27,5 :print gen$(mod&:(secs&,int(60)),-2);"s"
disp::
rem output the time remaining
at 3,6 :print "Time remaining:-"
at 23,6 :print gen$(secs&/60,-2);"m"
at 27,6 :print gen$(mod&:(secs&,int(60)),-2);"s"
rem see if finished
if secs&<=0
do
OpenMus:
if i%>9
play:(addr(val4%()),1)
elseif i%>6
play:(addr(val3%()),1)
elseif i%>3
play:(addr(val2%()),1)
else
play:(addr(val1%()),1)
endif
CloseMus:
pause 10
if key :break :endif
i%=i%+1
until i%>lim%
return
endif
rem see if user interupt
if key :return :endif
no:: rem see if a second has passed
s%=second
if s%=s1% :goto no:: :endif
s1%=s%
secs&=secs&-1 rem decr secs
goto disp::
ENDP
PROC mod&:(a&,b&)
rem modulo function
rem computes a& mod b&
return a&-(a&/b&)*b&
ENDP
PROC InstMus:
local s$(16)
s$="LOC::M:\SNDFRC"+chr$(0)
call ($685,addr(s$)+1,0,0,0,0)
ENDP
PROC OpenMus:
local ret%
while 1
ret%=ioopen(mcb%,"MUS:",-1)
if ret%=0
return
endif
print err$(ret%)
print "Retrying ("+chr$(2)+"-Esc aborts)"
pause 10
endwh
ENDP
PROC CloseMus:
ioclose(mcb%)
ENDP
PROC play:(buf%, len%)
iowrite(mcb%,buf%,len%)
ENDP