home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
The Datafile PD-CD 3
/
PDCD_3.iso
/
pocketbk
/
games
/
yam11src
/
UTIL.OPL
< prev
next >
Wrap
Text File
|
1995-07-08
|
2KB
|
92 lines
REM MODULE Util
REM Copyright (c) 1995 Bermuda Software Publishing
REM Written by Bruno Essmann (bessmann@iiic.ethz.ch)
PROC Util_Init
REM GenMarkNonActive, we don't want to waste batteries
CALL($138B, 0, 0, 0, 0, 0)
REM Initialize the randomizer
RANDOMIZE FLT(HOUR)*3600+MINUTE*60+SECOND
ENDP REM Util_Init
PROC Util_FileExist(ptr%)
REM Search for the given filename on all local drives
IF EXIST(peek$(ptr%)) : RETURN YES : ENDIF
POKEB ptr% + 1, %a
IF EXIST(peek$(ptr%)) : RETURN YES : ENDIF
POKEB ptr% + 1, %b
IF EXIST(peek$(ptr%)) : RETURN YES : ENDIF
RETURN NO
ENDP REM Util_FileExist
PROC Util_Query(t$, u$, v$)
REM Ask a simple question
LOCAL ret%
LOCK ON : Disp_OpenPauseWin
dINIT t$ : dTEXT "", u$, 2 : dTEXT "", v$, 2
dBUTTONS DialogNo, -Escape, DialogYes, Enter
ret% = DIALOG
Disp_ClosePauseWin : LOCK OFF
IF ret% <> Enter : RETURN YES : ENDIF
RETURN NO
ENDP REM Util_Query
PROC Util_TimeString(m%, s%)
REM Convert time (minutes, seconds) to a string mm:ss
LOCAL t$(6)
IF m% < 10 : t$ = "0" : ELSE t$ = "" : ENDIF
t$ = t$+NUM$(m%, 2)+":"
IF s% < 10 : t$ = t$+"0" : ENDIF
t$ = t$+NUM$(s%, 2)
RETURN t$
ENDP REM Util_TimeString
PROC Util_Rand(max%)
REM Simple random function with maximum
REM Note: I've tried a modified Lehmer-Alogrithm which
REM worked quite good (at least much better than
REM the internal) but it was much to slow...
RETURN INT(RND*max%)
ENDP REM Util_Rand
PROC Util_Play(sound%)
LOCAL n$(128)
REM Play a sound
IF D.Sound% = 1 : RETURN : ENDIF
IF sound% = SoundError
BEEP DefSoundErrTime, DefSoundErrPitch
ELSEIF sound% = SoundWon
IF D.SndType% = 2 : PlaySnd%:(D.SndWon$)
ELSE : PlaySnd%:(DefSoundWonName) : ENDIF
ELSEIF sound% = SoundLost
IF D.SndType% = 2 : PlaySnd%:(D.SndLost$)
ELSE : PlaySnd%:(DefSoundLostName) : ENDIF
ENDIF
ENDP REM Util_Play
PROC PlaySnd%:(f$)
LOCAL name$(128), h%, t$(32), b%(4), s&, t%
name$ = f$
IF IOOPEN(h%, name$, $0400) < 0
BEEP DefSoundErrTime, DefSoundErrPitch
GIPRINT name$+" ???"
RETURN
ELSE
IOREAD(h%, ADDR(t$), 32) : IOCLOSE(h%)
b%(1) = PEEKB (ADDR(t$)+18) : b%(2) = PEEKB (ADDR(t$)+19)
b%(3) = PEEKB (ADDR(t$)+20) : b%(4) = PEEKB (ADDR(t$)+21)
s& = b%(1)+(b%(2)*256)+(b%(3)*65536)+(b%(4)*16777216)
t% = s&/250
name$ = name$+CHR$(0)
CALL($1E86,UADD(ADDR(name$),1),t%,6-D.Sound%,0,PlaybackStatus)
ENDIF
ENDP
REM END Util.