mirror of
https://github.com/historicalsource/sherlock
synced 2024-07-08 01:24:42 +03:00
448 lines
12 KiB
Plaintext
448 lines
12 KiB
Plaintext
|
; "clock constants"
|
||
|
|
||
|
; "offsets into time tables"
|
||
|
|
||
|
<CONSTANT K-SEC 0> ; "sec"
|
||
|
<CONSTANT K-MIN 1> ; "min"
|
||
|
<CONSTANT K-HRS 2> ; "hrs"
|
||
|
<CONSTANT K-DAY 3> ; "day"
|
||
|
<CONSTANT K-DOW-BASE 12> ; "Known to be Sunday (dow = 0)"
|
||
|
|
||
|
; "alarm constants"
|
||
|
|
||
|
<CONSTANT K-A-RSIZE 30> ; "size of alarm routine table in words"
|
||
|
<CONSTANT K-A-TWDTH 4> ; "size of alarm time table entry in bytes"
|
||
|
<CONSTANT K-A-TSIZE <* ,K-A-TWDTH 30>> ; "size of alarm time table in bytes"
|
||
|
|
||
|
|
||
|
; "event constants"
|
||
|
|
||
|
; "clock globals"
|
||
|
|
||
|
<GLOBAL GL-CLOCK-WAIT:FLAG <>> ; "flag to inhibit clock update"
|
||
|
<GLOBAL GL-CLOCK-STOP:FLAG <>> ; "flag to stop clock update"
|
||
|
|
||
|
<CONSTANT GL-TIME:TABLE ; "pri game time table"
|
||
|
<TABLE (BYTE)
|
||
|
0 ; "sec 00-59"
|
||
|
0 ; "min 00-59"
|
||
|
0 ; "hrs 00-23"
|
||
|
0 ; "day 01-31">>
|
||
|
|
||
|
<CONSTANT GL-TEMP-TIME:TABLE <ITABLE ,K-A-TWDTH (BYTE) 0>>
|
||
|
; "table to hold time temporarily"
|
||
|
|
||
|
<CONSTANT GL-TIME-PARM:TABLE <ITABLE ,K-A-TWDTH (BYTE) 0>>
|
||
|
; "Parameter table to all time routines"
|
||
|
|
||
|
<CONSTANT GL-TIME-UPDT-INC:TABLE ; "next time inc is kept here"
|
||
|
<TABLE (BYTE)
|
||
|
0 ; "sec"
|
||
|
0 ; "min"
|
||
|
0 ; "hrs"
|
||
|
0 ; "day">>
|
||
|
|
||
|
<CONSTANT GL-TIME-UPDT-DEF:TABLE ; "default time inc is kept here"
|
||
|
<TABLE (BYTE)
|
||
|
0 ; "sec"
|
||
|
0 ; "min"
|
||
|
0 ; "hrs"
|
||
|
0 ; "day">>
|
||
|
|
||
|
<CONSTANT GL-DAY-NAME:TABLE ; "long and short day names"
|
||
|
<PTABLE
|
||
|
"Sunday" ; "offset of 0"
|
||
|
"Monday"
|
||
|
"Tuesday"
|
||
|
"Wednesday"
|
||
|
"Thursday"
|
||
|
"Friday"
|
||
|
"Saturday"
|
||
|
"Sun" ; "offset of 7"
|
||
|
"Mon"
|
||
|
"Tue"
|
||
|
"Wed"
|
||
|
"Thu"
|
||
|
"Fri"
|
||
|
"Sat"
|
||
|
"Sunday " ; "offset of 14"
|
||
|
"Monday "
|
||
|
"Tuesday "
|
||
|
"Wednesday"
|
||
|
"Thursday "
|
||
|
"Friday "
|
||
|
"Saturday "
|
||
|
>
|
||
|
>
|
||
|
|
||
|
; "alarm globals"
|
||
|
|
||
|
<GLOBAL GL-ALARM-WAIT:FLAG <>> ; "flag to inhibit alarm check"
|
||
|
<GLOBAL GL-ALARM-STOP:FLAG <>> ; "flag to stop alarm check"
|
||
|
<GLOBAL GL-ALARM-EXEC:FLAG <>> ; "flag to show an alarm is executing"
|
||
|
|
||
|
<CONSTANT GL-A-ROUT:TABLE <ITABLE ,K-A-RSIZE 0>> ; "table of routines"
|
||
|
<CONSTANT GL-A-TIME:TABLE <ITABLE ,K-A-TSIZE (BYTE) 0>>
|
||
|
; "table of times (6 words)"
|
||
|
|
||
|
; "event globals"
|
||
|
|
||
|
; "support routines use by clock/event/alarm"
|
||
|
|
||
|
; "RT-COPY-TIME"
|
||
|
; "Copy time table 1 to time table 2"
|
||
|
|
||
|
<ROUTINE RT-COPY-TIME (TBL1 TBL2)
|
||
|
<COPYT .TBL1 .TBL2 ,K-A-TWDTH>>
|
||
|
|
||
|
; "RT-NORM-TIME"
|
||
|
|
||
|
<ROUTINE RT-NORM-TIME (TIME-TABLE "AUX" TEMP M-LEN)
|
||
|
; "normalize seconds"
|
||
|
<SET TEMP <GETB .TIME-TABLE ,K-SEC>>
|
||
|
<PUTB .TIME-TABLE ,K-SEC <MOD .TEMP 60>>
|
||
|
; "This is the new minutes value"
|
||
|
<SET TEMP <+ <GETB .TIME-TABLE ,K-MIN> </ .TEMP 60>>>
|
||
|
; "normalize minutes"
|
||
|
<PUTB .TIME-TABLE ,K-MIN <MOD .TEMP 60>>
|
||
|
<SET TEMP <+ <GETB .TIME-TABLE ,K-HRS> </ .TEMP 60>>>
|
||
|
; "normalize hours"
|
||
|
<PUTB .TIME-TABLE ,K-HRS <MOD .TEMP 24>>
|
||
|
; "Update day of month"
|
||
|
<PUTB .TIME-TABLE ,K-DAY <+ <GETB .TIME-TABLE ,K-DAY>
|
||
|
<SET TEMP </ .TEMP 24>>>>
|
||
|
; "normalize day, month, and year (including leap years)"
|
||
|
; "Given that the game takes place in the middle of June in 1887,
|
||
|
this is a complete waste of time..."
|
||
|
;<REPEAT ()
|
||
|
<SET M-LEN <GETB ,GL-MONTH-LEN <GETB .TIME-TABLE ,K-MON>>>
|
||
|
<COND (<NOT <EQUAL? <GETB .TIME-TABLE ,K-MON> 2>>
|
||
|
T)
|
||
|
(<ZERO? <MOD <GETB .TIME-TABLE ,K-YRS> 100>>
|
||
|
T)
|
||
|
(<ZERO? <MOD <GETB .TIME-TABLE ,K-YRS> 4>>
|
||
|
<INC M-LEN>)>
|
||
|
<SET TEMP <GETB .TIME-TABLE ,K-DAY>>
|
||
|
<COND (<G? .TEMP .M-LEN>
|
||
|
<PUTB .TIME-TABLE ,K-DAY <- .TEMP .M-LEN>>
|
||
|
<PUTB .TIME-TABLE ,K-MON <+ <GETB .TIME-TABLE ,K-MON> 1>>
|
||
|
<SET TEMP <GETB .TIME-TABLE ,K-MON>>
|
||
|
<COND (<G? .TEMP 12>
|
||
|
<PUTB .TIME-TABLE ,K-MON <- .TEMP 12>>
|
||
|
<PUTB .TIME-TABLE ,K-YRS
|
||
|
<+ <GETB .TIME-TABLE ,K-YRS> 1>>)>)
|
||
|
(T <RETURN>)>>>
|
||
|
|
||
|
; "clock routines"
|
||
|
|
||
|
; "RT-CLOCK-INC-SET. Made a macro that calls RT-DO-CLOCK-SET"
|
||
|
|
||
|
<ROUTINE RT-DO-CLOCK-SET (TBL HRS MIN SEC
|
||
|
"OPTIONAL" (DAY 0))
|
||
|
<PUTB .TBL ,K-SEC .SEC>
|
||
|
<PUTB .TBL ,K-MIN .MIN>
|
||
|
<PUTB .TBL ,K-HRS .HRS>
|
||
|
<PUTB .TBL ,K-DAY .DAY>
|
||
|
.TBL>
|
||
|
|
||
|
; "RT-CLOCK-DEF-SET. Moved to MACROS"
|
||
|
|
||
|
; "RT-CLOCK-SET. MOVED TO MACROS"
|
||
|
|
||
|
; "RT-CLOCK-INC"
|
||
|
|
||
|
<ROUTINE RT-CLOCK-INC ()
|
||
|
<COND (<MC-T? ,GL-CLOCK-WAIT>
|
||
|
<SETG GL-CLOCK-WAIT <>>
|
||
|
<RFALSE>)
|
||
|
(<MC-T? ,GL-CLOCK-STOP>
|
||
|
<RFALSE>)>
|
||
|
; "add gl-time-updt-inc to gl-time"
|
||
|
<REPEAT ((N 0))
|
||
|
<PUTB ,GL-TIME .N
|
||
|
<+ <GETB ,GL-TIME .N>
|
||
|
<GETB ,GL-TIME-UPDT-INC .N>>>
|
||
|
<COND (<G? <SET N <+ .N 1>>
|
||
|
<- ,K-A-TWDTH 1>> <RETURN>)>>
|
||
|
; "copy gl-time-updt-def into gl-time-updt-inc"
|
||
|
<COPYT ,GL-TIME-UPDT-DEF ,GL-TIME-UPDT-INC ,K-A-TWDTH>
|
||
|
; "normalize the time in gl-time"
|
||
|
<RT-NORM-TIME ,GL-TIME>>
|
||
|
|
||
|
; "RT-PARM-SET MOVED TO MACROS"
|
||
|
|
||
|
; "RT-CLOCK-CMP"
|
||
|
; "Returns -1 if arg time < current time."
|
||
|
; "Returns 0 if arg time = current time."
|
||
|
; "Returns 1 if arg time > current time."
|
||
|
|
||
|
<ROUTINE RT-CLOCK-CMP (HRS MIN SEC "OPTIONAL" (DAY 0)
|
||
|
"AUX" TMP)
|
||
|
<COND (<ZERO? .DAY>
|
||
|
T)
|
||
|
(<G? .DAY <SET TMP <GETB ,GL-TIME ,K-DAY>>>
|
||
|
<RETURN 1>)
|
||
|
(<L? .DAY .TMP>
|
||
|
<RETURN -1>)>
|
||
|
<COND (<G? .HRS <SET TMP <GETB ,GL-TIME ,K-HRS>>>
|
||
|
<RETURN 1>)
|
||
|
(<L? .HRS .TMP>
|
||
|
<RETURN -1>)
|
||
|
(<G? .MIN <SET TMP <GETB ,GL-TIME ,K-MIN>>>
|
||
|
<RETURN 1>)
|
||
|
(<L? .MIN .TMP>
|
||
|
<RETURN -1>)
|
||
|
(<G? .SEC <SET TMP <GETB ,GL-TIME ,K-SEC>>>
|
||
|
<RETURN 1>)
|
||
|
(<L? .SEC .TMP>
|
||
|
<RETURN -1>)
|
||
|
(T
|
||
|
<RETURN 0>)>>
|
||
|
|
||
|
; "RT-CLOCK-JMP"
|
||
|
|
||
|
<ROUTINE RT-CLOCK-JMP (HRS MIN SEC "OPTIONAL" (DAY 0))
|
||
|
<RT-CLOCK-INC-SET .HRS .MIN .SEC .DAY>
|
||
|
<RT-CLOCK-INC>
|
||
|
<RT-ALARM-CHK
|
||
|
<COND (<MC-VERB? WAIT WAIT-FOR>
|
||
|
2)
|
||
|
(T 1)>>
|
||
|
<SETG GL-CLOCK-WAIT T>>
|
||
|
|
||
|
; "RT-CLK-NTI-MSG"
|
||
|
|
||
|
<ROUTINE RT-CLK-NTI-MSG ("OPTIONAL" (FMT 7) "AUX" HRS MIN SEC MSD MER
|
||
|
(AM-PM? 0))
|
||
|
<SET HRS <GETB ,GL-TIME ,K-HRS>>
|
||
|
<SET MIN <GETB ,GL-TIME ,K-MIN>>
|
||
|
<SET SEC <GETB ,GL-TIME ,K-SEC>>
|
||
|
<COND (<BAND .FMT ,K-NTI-HH>
|
||
|
<COND (<BAND .FMT ,K-NTI-MT>
|
||
|
<SET MSD "0">)
|
||
|
(<EQUAL? .HRS 0>
|
||
|
<SET HRS <+ .HRS 12>>
|
||
|
<SET MSD " ">
|
||
|
<SET AM-PM? 1>)
|
||
|
(<L? .HRS 12>
|
||
|
<SET MSD " ">
|
||
|
<SET AM-PM? 1>)
|
||
|
(<EQUAL? .HRS 12>
|
||
|
<SET MSD " ">
|
||
|
<SET AM-PM? 2>)
|
||
|
(T
|
||
|
<SET HRS <- .HRS 12>>
|
||
|
<SET MSD " ">
|
||
|
<SET AM-PM? 2>)>
|
||
|
<COND (<==? .AM-PM? 1>
|
||
|
<COND (<BAND .FMT ,K-NTI-SM>
|
||
|
<SET MER " AM">)
|
||
|
(T
|
||
|
<SET MER " a.m.">)>)
|
||
|
(<==? .AM-PM? 2>
|
||
|
<COND (<BAND .FMT ,K-NTI-SM>
|
||
|
<SET MER " PM">)
|
||
|
(T
|
||
|
<SET MER " p.m.">)>)
|
||
|
(T
|
||
|
<SET MER " ">)>
|
||
|
<COND (<L? .HRS 10>
|
||
|
<TELL .MSD>)>
|
||
|
<TELL N .HRS>)>
|
||
|
<COND (<BAND .FMT ,K-NTI-MM>
|
||
|
<COND (<BAND .FMT ,K-NTI-HH>
|
||
|
<TELL ":">)>
|
||
|
<COND (<L? .MIN 10>
|
||
|
<TELL "0">)>
|
||
|
<TELL N .MIN>)>
|
||
|
<COND (<BAND .FMT ,K-NTI-SS>
|
||
|
<COND (<OR <BAND .FMT ,K-NTI-HH>
|
||
|
<BAND .FMT ,K-NTI-MM>>
|
||
|
<TELL ":">)>
|
||
|
<COND (<L? .SEC 10>
|
||
|
<TELL "0">)>
|
||
|
<TELL N .SEC>)>
|
||
|
<COND (<BAND .FMT ,K-NTI-HH>
|
||
|
<TELL .MER>)>>
|
||
|
|
||
|
; "RT-CLK-DOW-MSG"
|
||
|
|
||
|
<ROUTINE RT-CLK-DOW-MSG ("OPTIONAL" (FMT 1) "AUX" DOW WDOW)
|
||
|
<SET DOW <MOD <- <GETB ,GL-TIME ,K-DAY> ,K-DOW-BASE> 7>>
|
||
|
<COND (<BAND .FMT ,K-DOW-DW>
|
||
|
<COND (<BAND .FMT ,K-DOW-EN>
|
||
|
<SET WDOW <GET ,GL-DAY-NAME <+ .DOW 14>>>)
|
||
|
(<BAND .FMT ,K-DOW-SN>
|
||
|
<SET WDOW <GET ,GL-DAY-NAME <+ .DOW 7>>>)
|
||
|
(T
|
||
|
<SET WDOW <GET ,GL-DAY-NAME .DOW>>)>
|
||
|
<TELL .WDOW>)>>
|
||
|
|
||
|
; "alarm routines"
|
||
|
|
||
|
; "RT-ALARM-SET?"
|
||
|
|
||
|
<ROUTINE RT-ALARM-SET? (RTN "AUX" (R-PTR 0) T-PTR)
|
||
|
<REPEAT ()
|
||
|
<COND (<EQUAL? .R-PTR ,K-A-RSIZE>
|
||
|
<RFALSE>)
|
||
|
(<EQUAL? .RTN <GET ,GL-A-ROUT .R-PTR>>
|
||
|
<SET T-PTR <* .R-PTR ,K-A-TWDTH>>
|
||
|
<RT-COPY-TIME <REST ,GL-A-TIME .T-PTR> ,GL-TIME-PARM>
|
||
|
<RTRUE>)
|
||
|
(T
|
||
|
<INC R-PTR>)>>>
|
||
|
|
||
|
; "RT-ALARM-SET-REL"
|
||
|
|
||
|
<ROUTINE RT-ALARM-SET-REL (RTN TIME "AUX" (R-PTR 0) T-PTR)
|
||
|
<REPEAT ()
|
||
|
<COND (<EQUAL? .R-PTR ,K-A-RSIZE>
|
||
|
<TELL CR "*** TOO MANY ALARMS (REL) ***" CR CR>
|
||
|
<RFALSE>)>
|
||
|
;<DEBUGGING? <COND (<EQUAL? .R-PTR ,K-A-RSIZE>
|
||
|
<TELL CR "*** TOO MANY ALARMS (REL) ***" CR CR>
|
||
|
<RFALSE>)>>
|
||
|
<COND (<ZERO? <GET ,GL-A-ROUT .R-PTR>>
|
||
|
<PUT ,GL-A-ROUT .R-PTR .RTN>
|
||
|
<SET T-PTR <* .R-PTR ,K-A-TWDTH>>
|
||
|
<COND (<MC-T? ,GL-ALARM-EXEC>
|
||
|
<REPEAT ((N 0))
|
||
|
<PUTB ,GL-A-TIME <+ .T-PTR .N>
|
||
|
<+ <GETB ,GL-TIME .N>
|
||
|
<GETB .TIME .N>>>
|
||
|
<COND (<G? <SET N <+ .N 1>>
|
||
|
<- ,K-A-TWDTH 1>>
|
||
|
<RETURN>)>>)
|
||
|
(T
|
||
|
<REPEAT ((N 0))
|
||
|
<PUTB ,GL-A-TIME <+ .T-PTR .N>
|
||
|
<+ <GETB ,GL-TIME .N>
|
||
|
<GETB .TIME .N>
|
||
|
<GETB ,GL-TIME-UPDT-INC .N>>>
|
||
|
<COND (<G? <SET N <+ .N 1>>
|
||
|
<- ,K-A-TWDTH 1>>
|
||
|
<RETURN>)>>)>
|
||
|
<RT-NORM-TIME <REST ,GL-A-TIME .T-PTR>>
|
||
|
<RTRUE>)
|
||
|
(T
|
||
|
<INC R-PTR>)>>>
|
||
|
|
||
|
; "RT-ALARM-SET-ABS"
|
||
|
|
||
|
<ROUTINE RT-ALARM-SET-ABS (RTN TIME "AUX" (R-PTR 0) T-PTR)
|
||
|
<REPEAT ()
|
||
|
<COND (<EQUAL? .R-PTR ,K-A-RSIZE>
|
||
|
<TELL CR "*** TOO MANY (ABS) ALARMS ***" CR CR>
|
||
|
<RFALSE>)>
|
||
|
;<DEBUGGING? <COND (<EQUAL? .R-PTR ,K-A-RSIZE>
|
||
|
<TELL CR "*** TOO MANY (ABS) ALARMS ***" CR CR>
|
||
|
<RFALSE>)>>
|
||
|
<COND (<ZERO? <GET ,GL-A-ROUT .R-PTR>>
|
||
|
<PUT ,GL-A-ROUT .R-PTR .RTN>
|
||
|
<SET T-PTR <* .R-PTR ,K-A-TWDTH>>
|
||
|
<COPYT .TIME <REST ,GL-A-TIME .T-PTR> ,K-A-TWDTH>
|
||
|
<RTRUE>)
|
||
|
(T
|
||
|
<INC R-PTR>)>>>
|
||
|
|
||
|
; "RT-ALARM-CLR"
|
||
|
|
||
|
<ROUTINE RT-ALARM-CLR (RTN "AUX" (R-PTR 0) T-PTR)
|
||
|
<REPEAT ()
|
||
|
<COND (<EQUAL? .R-PTR ,K-A-RSIZE>
|
||
|
<RFALSE>)
|
||
|
(<EQUAL? .RTN <GET ,GL-A-ROUT .R-PTR>>
|
||
|
<PUT ,GL-A-ROUT .R-PTR 0>
|
||
|
<SET T-PTR <* .R-PTR ,K-A-TWDTH>>
|
||
|
<COPYT <REST ,GL-A-TIME .T-PTR> 0 ,K-A-TWDTH>)>
|
||
|
<INC R-PTR>>>
|
||
|
|
||
|
; "RT-ALARM-CHK"
|
||
|
|
||
|
<GLOBAL RUN-SMELL-ETHERIUM? <>>
|
||
|
|
||
|
<ROUTINE RT-ALARM-CHK ("OPTIONAL" (PARM 0)
|
||
|
"AUX" VAL (RTN -1) (R-PTR 0) (R-CNT 0)
|
||
|
T-PTR HRS MIN SEC DAY T-TIME)
|
||
|
<SETG RUN-SMELL-ETHERIUM? <>>
|
||
|
<COND (<MC-T? ,GL-ALARM-WAIT>
|
||
|
<SETG GL-ALARM-WAIT <>>
|
||
|
<RFALSE>)
|
||
|
(<MC-T? ,GL-ALARM-STOP>
|
||
|
<RFALSE>)>
|
||
|
<RT-COPY-TIME ,GL-TIME ,GL-TEMP-TIME>
|
||
|
<REPEAT ()
|
||
|
<COND (<EQUAL? .R-PTR ,K-A-RSIZE>
|
||
|
<COND (<EQUAL? .RTN -1>
|
||
|
<COND (,RUN-SMELL-ETHERIUM? <RETURN>)>
|
||
|
<RETURN .R-CNT>)
|
||
|
(T
|
||
|
; "Time to run it"
|
||
|
<SET R-PTR .RTN> ; "Get the offset stored in RTN"
|
||
|
<SET RTN <GET ,GL-A-ROUT .R-PTR>>
|
||
|
<SET T-PTR <* .R-PTR ,K-A-TWDTH>>
|
||
|
<PUT ,GL-A-ROUT .R-PTR 0>
|
||
|
<SET T-TIME <ZREST ,GL-A-TIME .T-PTR>>
|
||
|
<SET SEC <GETB .T-TIME ,K-SEC>>
|
||
|
<SET MIN <GETB .T-TIME ,K-MIN>>
|
||
|
<SET HRS <GETB .T-TIME ,K-HRS>>
|
||
|
<SET DAY <GETB .T-TIME ,K-DAY>>
|
||
|
<COPYT .T-TIME 0 ,K-A-TWDTH>
|
||
|
<COND (<MC-ISNOT? ,CH-PLAYER ,FL-ASLEEP>
|
||
|
<RT-UPDATE-STATUS-LINE>)>
|
||
|
<SETG GL-ALARM-EXEC T>
|
||
|
<SET VAL <APPLY .RTN>>
|
||
|
<COND (,RUN-SMELL-ETHERIUM? <RETURN>)>
|
||
|
<SETG GL-ALARM-EXEC <>>
|
||
|
<RT-COPY-TIME ,GL-TEMP-TIME ,GL-TIME>
|
||
|
<INC R-CNT>
|
||
|
; "If alarm time != new time, ask for key to cont."
|
||
|
<COND (<AND <MC-T? .VAL>
|
||
|
<EQUAL? <RT-CLOCK-CMP .HRS .MIN .SEC
|
||
|
.DAY> -1>>
|
||
|
<COND (<EQUAL? .PARM 1>
|
||
|
<TELL "[Press any key to continue.]" CR>
|
||
|
<INPUT 1>)
|
||
|
(<EQUAL? .PARM 2>
|
||
|
<REPEAT ()
|
||
|
<TELL CR
|
||
|
"Do you want to continue waiting?" CR
|
||
|
"Please press Y or N > ">
|
||
|
<SET VAL <INPUT 1>>
|
||
|
<PRINTC .VAL>
|
||
|
<CRLF>
|
||
|
<COND
|
||
|
(<EQUAL? .VAL !\N !\n>
|
||
|
<SET RTN -1>
|
||
|
<SET R-PTR ,K-A-RSIZE>
|
||
|
<RT-CLOCK-SET .HRS .MIN .SEC
|
||
|
.DAY>
|
||
|
<RETURN>)
|
||
|
(<EQUAL? .VAL !\Y !\y>
|
||
|
<RETURN>)>>)>)>
|
||
|
; "Reset and start loop again."
|
||
|
<COND (<EQUAL? .RTN -1>
|
||
|
<AGAIN>)>
|
||
|
<SET RTN -1>
|
||
|
<SET R-PTR 0>
|
||
|
<AGAIN>)>)>
|
||
|
<COND (<MC-T? <GET ,GL-A-ROUT .R-PTR>>
|
||
|
<SET T-PTR <* .R-PTR ,K-A-TWDTH>>
|
||
|
<SET SEC <GETB ,GL-A-TIME <+ .T-PTR ,K-SEC>>>
|
||
|
<SET MIN <GETB ,GL-A-TIME <+ .T-PTR ,K-MIN>>>
|
||
|
<SET HRS <GETB ,GL-A-TIME <+ .T-PTR ,K-HRS>>>
|
||
|
<SET DAY <GETB ,GL-A-TIME <+ .T-PTR ,K-DAY>>>
|
||
|
<COND (<OR <AND <MC-T? .PARM>
|
||
|
<EQUAL? <RT-CLOCK-CMP .HRS .MIN .SEC
|
||
|
.DAY> -1>>
|
||
|
<AND <MC-F? .PARM>
|
||
|
<EQUAL? <RT-CLOCK-CMP .HRS .MIN .SEC
|
||
|
.DAY> -1 0>>>
|
||
|
<RT-CLOCK-SET .HRS .MIN .SEC .DAY>
|
||
|
<SET RTN .R-PTR>)>)>
|
||
|
<INC R-PTR>>
|
||
|
<COND (,RUN-SMELL-ETHERIUM?
|
||
|
<RT-SMELL-ETHERIUM?>
|
||
|
.R-CNT)>>
|