99 lines
1.8 KiB
Plaintext
99 lines
1.8 KiB
Plaintext
|
|
|
|
.FUNCT QUEUE,RTN,TICK,CINT
|
|
CALL INT,RTN >CINT
|
|
PUT CINT,C-TICK,TICK
|
|
RETURN CINT
|
|
|
|
|
|
.FUNCT INT,RTN,E,C,INT
|
|
ADD C-TABLE,C-TABLELEN >E
|
|
ADD C-TABLE,C-INTS >C
|
|
?PRG1: EQUAL? C,E \?ELS5
|
|
SUB C-INTS,C-INTLEN >C-INTS
|
|
ADD C-TABLE,C-INTS >INT
|
|
PUT INT,C-RTN,RTN
|
|
RETURN INT
|
|
?ELS5: GET C,C-RTN
|
|
EQUAL? STACK,RTN \?CND3
|
|
RETURN C
|
|
?CND3: ADD C,C-INTLEN >C
|
|
JUMP ?PRG1
|
|
|
|
|
|
.FUNCT ENABLED?,RTN,C,E
|
|
ADD C-TABLE,C-TABLELEN >E
|
|
ADD C-TABLE,C-INTS >C
|
|
?PRG1: EQUAL? C,E /FALSE
|
|
GET C,C-RTN
|
|
EQUAL? STACK,RTN \?CND3
|
|
GET C,C-ENABLED?
|
|
ZERO? STACK \TRUE
|
|
RFALSE
|
|
?CND3: ADD C,C-INTLEN >C
|
|
JUMP ?PRG1
|
|
|
|
|
|
.FUNCT QUEUED?,RTN,C,E
|
|
ADD C-TABLE,C-TABLELEN >E
|
|
ADD C-TABLE,C-INTS >C
|
|
?PRG1: EQUAL? C,E /FALSE
|
|
GET C,C-RTN
|
|
EQUAL? STACK,RTN \?CND3
|
|
GET C,C-ENABLED?
|
|
ZERO? STACK /FALSE
|
|
GET C,C-TICK
|
|
ZERO? STACK \TRUE
|
|
RFALSE
|
|
?CND3: ADD C,C-INTLEN >C
|
|
JUMP ?PRG1
|
|
|
|
|
|
.FUNCT CLOCKER,C,E,TICK,FLG=0,VAL
|
|
ZERO? CLOCK-WAIT /?CND1
|
|
SET 'CLOCK-WAIT,FALSE-VALUE
|
|
RFALSE
|
|
?CND1: INC 'PRESENT-TIME
|
|
GRTR? PRESENT-TIME,1439 \?CND5
|
|
SUB PRESENT-TIME,1440 >PRESENT-TIME
|
|
?CND5: ZERO? WATCH-WOUND /?CND8
|
|
IGRTR? 'WATCH-MOVES,59 \?CND8
|
|
SUB WATCH-MOVES,60 >WATCH-MOVES
|
|
IGRTR? 'WATCH-SCORE,11 \?CND12
|
|
SET 'WATCH-SCORE,0
|
|
?CND12:
|
|
?CND8: CALL WATCH-UPDATE
|
|
ADD C-TABLE,C-INTS >C
|
|
ADD C-TABLE,C-TABLELEN >E
|
|
?PRG18: EQUAL? C,E \?ELS22
|
|
RETURN FLG
|
|
?ELS22: GET C,C-ENABLED?
|
|
ZERO? STACK /?CND20
|
|
GET C,C-TICK >TICK
|
|
ZERO? TICK \?ELS27
|
|
JUMP ?CND20
|
|
?ELS27: SUB TICK,1
|
|
PUT C,C-TICK,STACK
|
|
GRTR? TICK,1 /?CND25
|
|
GET C,C-RTN
|
|
CALL STACK >VAL
|
|
ZERO? VAL /?CND25
|
|
ZERO? FLG /?THN38
|
|
EQUAL? VAL,M-FATAL \?CND20
|
|
?THN38: SET 'FLG,VAL
|
|
?CND25:
|
|
?CND20: ADD C,C-INTLEN >C
|
|
JUMP ?PRG18
|
|
|
|
|
|
.FUNCT WATCH-UPDATE
|
|
IN? WATCH,PLAYER \?ELS5
|
|
SET 'MOVES,WATCH-MOVES
|
|
SET 'SCORE,WATCH-SCORE
|
|
RETURN SCORE
|
|
?ELS5: SET 'MOVES,99
|
|
SET 'SCORE,111
|
|
RETURN SCORE
|
|
|
|
.ENDI
|