stationfall/misc.zap

531 lines
11 KiB
Plaintext
Raw Permalink Normal View History

2019-04-14 13:09:16 -07:00
.FUNCT PICK-ONE,TBL,LENGTH,CNT,RND,MSG,RFROB
GET TBL,0 >LENGTH
GET TBL,1 >CNT
DEC 'LENGTH
ADD TBL,2 >TBL
MUL CNT,2
ADD TBL,STACK >RFROB
SUB LENGTH,CNT
RANDOM STACK >RND
GET RFROB,RND >MSG
GET RFROB,1
PUT RFROB,RND,STACK
PUT RFROB,1,MSG
INC 'CNT
EQUAL? CNT,LENGTH \?CND1
SET 'CNT,0
?CND1: PUT TBL,0,CNT
RETURN MSG
.FUNCT APRINT,OBJ
2019-04-14 13:09:56 -07:00
FSET? OBJ,NARTICLEBIT \?CCL3
2019-04-14 13:09:16 -07:00
PRINTC 32
JUMP ?CND1
2019-04-14 13:09:56 -07:00
?CCL3: FSET? OBJ,VOWELBIT \?CCL5
2019-04-14 13:09:16 -07:00
PRINTI " an "
JUMP ?CND1
2019-04-14 13:09:56 -07:00
?CCL5: PRINTI " a "
2019-04-14 13:09:16 -07:00
?CND1: PRINTD OBJ
RTRUE
.FUNCT TPRINT,OBJ
2019-04-14 13:09:56 -07:00
FSET? OBJ,NARTICLEBIT \?CCL3
2019-04-14 13:09:16 -07:00
PRINTC 32
JUMP ?CND1
2019-04-14 13:09:56 -07:00
?CCL3: PRINTI " the "
2019-04-14 13:09:16 -07:00
?CND1: PRINTD OBJ
RTRUE
.FUNCT TPRINT-PRSO
CALL TPRINT,PRSO
RSTACK
.FUNCT TPRINT-PRSI
CALL TPRINT,PRSI
RSTACK
.FUNCT ARPRINT,OBJ
CALL APRINT,OBJ
PRINT PERIOD-CR
RTRUE
.FUNCT TRPRINT,OBJ
CALL TPRINT,OBJ
PRINT PERIOD-CR
RTRUE
.FUNCT GO
START::
?FCN: SET 'WINNER,PROTAGONIST
2019-04-14 13:09:56 -07:00
SET 'HERE,DECK-TWELVE
2019-04-14 13:09:16 -07:00
RANDOM 1220
ADD 4430,STACK >INTERNAL-MOVES
SET 'MOVES,INTERNAL-MOVES
SUB 8100,INTERNAL-MOVES
CALL QUEUE,I-SLEEP-WARNINGS,STACK
CALL QUEUE,I-HUNGER-WARNINGS,1330
2019-04-14 13:09:56 -07:00
CALL QUEUE,I-BLATHER,-1
PRINTI "It's been five years since your planetfall on Resida. Your heroics in saving that doomed world resulted in a big promotion, but your life of dull scrubwork has been replaced by a life of dull paperwork. Today you find yourself amidst the administrative maze of Deck Twelve on a typically exciting task: an emergency mission to Space Station Gamma Delta Gamma 777-G 59/59 Sector Alpha-Mu-79 to pick up a supply of "
2019-04-14 13:09:16 -07:00
PRINT FORM-NAME
PRINT ELLIPSIS
CALL V-VERSION
USL
CRLF
CALL V-LOOK
CALL MAIN-LOOP
JUMP ?FCN
.FUNCT MAIN-LOOP,TRASH
?PRG1: CALL MAIN-LOOP-1 >TRASH
JUMP ?PRG1
.FUNCT MAIN-LOOP-1,ICNT,OCNT,NUM,CNT,OBJ,TBL,V,PTBL,OBJ1,TMP,?TMP1
SET 'CNT,0
SET 'OBJ,FALSE-VALUE
SET 'PTBL,TRUE-VALUE
CALL PARSER >P-WON
2019-04-14 13:09:56 -07:00
ZERO? P-WON /?CCL3
2019-04-14 13:09:16 -07:00
GET P-PRSI,P-MATCHLEN >ICNT
GET P-PRSO,P-MATCHLEN >OCNT
EQUAL? PRSA,V?WALK /?CND4
ZERO? P-IT-OBJECT /?CND4
CALL ACCESSIBLE?,P-IT-OBJECT
ZERO? STACK /?CND4
SET 'TMP,FALSE-VALUE
?PRG9: IGRTR? 'CNT,ICNT /?REP10
GET P-PRSI,CNT
EQUAL? STACK,IT \?PRG9
PUT P-PRSI,CNT,P-IT-OBJECT
SET 'TMP,TRUE-VALUE
2019-04-14 13:09:56 -07:00
?REP10: ZERO? TMP \?CND16
2019-04-14 13:09:16 -07:00
SET 'CNT,0
2019-04-14 13:09:56 -07:00
?PRG18: IGRTR? 'CNT,OCNT /?CND16
2019-04-14 13:09:16 -07:00
GET P-PRSO,CNT
2019-04-14 13:09:56 -07:00
EQUAL? STACK,IT \?PRG18
2019-04-14 13:09:16 -07:00
PUT P-PRSO,CNT,P-IT-OBJECT
2019-04-14 13:09:56 -07:00
?CND16: SET 'CNT,0
?CND4: ZERO? OCNT \?CCL27
SET 'NUM,OCNT
JUMP ?CND25
?CCL27: GRTR? OCNT,1 \?CCL29
2019-04-14 13:09:16 -07:00
SET 'TBL,P-PRSO
2019-04-14 13:09:56 -07:00
ZERO? ICNT \?CCL32
2019-04-14 13:09:16 -07:00
SET 'OBJ,FALSE-VALUE
2019-04-14 13:09:56 -07:00
JUMP ?CND30
?CCL32: GET P-PRSI,1 >OBJ
?CND30: SET 'NUM,OCNT
JUMP ?CND25
?CCL29: GRTR? ICNT,1 \?CCL34
2019-04-14 13:09:16 -07:00
SET 'PTBL,FALSE-VALUE
SET 'TBL,P-PRSI
GET P-PRSO,1 >OBJ
2019-04-14 13:09:56 -07:00
SET 'NUM,ICNT
JUMP ?CND25
2019-04-14 13:11:30 -07:00
?CCL34: GETB P-SYNTAX,P-SBITS
BAND STACK,P-SONUMS
EQUAL? STACK,2 \?CCL36
SET 'NUM,ICNT
JUMP ?CND25
?CCL36: SET 'NUM,1
?CND25: ZERO? OBJ \?CND37
EQUAL? ICNT,1 \?CND37
2019-04-14 13:09:16 -07:00
GET P-PRSI,1 >OBJ
2019-04-14 13:11:30 -07:00
?CND37: EQUAL? PRSA,V?WALK \?CCL43
CALL PERFORM,PRSA,PRSO >V
JUMP ?CND41
?CCL43: ZERO? NUM \?CCL45
2019-04-14 13:09:16 -07:00
GETB P-SYNTAX,P-SBITS
BAND STACK,P-SONUMS
2019-04-14 13:11:30 -07:00
ZERO? STACK \?CCL48
CALL PERFORM,PRSA >V
2019-04-14 13:09:16 -07:00
SET 'PRSO,FALSE-VALUE
2019-04-14 13:11:30 -07:00
JUMP ?CND41
?CCL48: ZERO? LIT \?CCL50
2019-04-14 13:09:16 -07:00
PRINT TOO-DARK
CRLF
CALL STOP
2019-04-14 13:11:30 -07:00
JUMP ?CND41
?CCL50: PRINTI "There isn't anything to "
2019-04-14 13:09:16 -07:00
GET P-ITBL,P-VERBN >TMP
2019-04-14 13:11:30 -07:00
EQUAL? PRSA,V?TELL \?CCL53
2019-04-14 13:09:16 -07:00
PRINTI "talk to"
2019-04-14 13:11:30 -07:00
JUMP ?CND51
?CCL53: ZERO? P-OFLAG \?CTR54
ZERO? P-MERGED /?CCL55
?CTR54: GET TMP,0
2019-04-14 13:09:16 -07:00
PRINTB STACK
2019-04-14 13:11:30 -07:00
JUMP ?CND51
?CCL55: GETB TMP,2 >?TMP1
2019-04-14 13:09:16 -07:00
GETB TMP,3
CALL WORD-PRINT,?TMP1,STACK
2019-04-14 13:11:30 -07:00
?CND51: PRINTC 33
2019-04-14 13:09:16 -07:00
CRLF
SET 'V,FALSE-VALUE
CALL STOP
2019-04-14 13:11:30 -07:00
JUMP ?CND41
?CCL45: SET 'P-NOT-HERE,0
2019-04-14 13:09:16 -07:00
SET 'P-MULT,FALSE-VALUE
2019-04-14 13:11:30 -07:00
GRTR? NUM,1 \?CND58
2019-04-14 13:09:16 -07:00
SET 'P-MULT,TRUE-VALUE
2019-04-14 13:11:30 -07:00
?CND58: SET 'TMP,FALSE-VALUE
?PRG60: IGRTR? 'CNT,NUM \?CCL64
GRTR? P-NOT-HERE,0 \?CCL67
2019-04-14 13:09:16 -07:00
PRINTI "[The "
2019-04-14 13:11:30 -07:00
EQUAL? P-NOT-HERE,NUM /?CND68
2019-04-14 13:09:16 -07:00
PRINTI "other "
2019-04-14 13:11:30 -07:00
?CND68: PRINTI "object"
EQUAL? P-NOT-HERE,1 /?CND70
2019-04-14 13:09:16 -07:00
PRINTC 115
2019-04-14 13:11:30 -07:00
?CND70: PRINTI " that you mentioned "
EQUAL? P-NOT-HERE,1 /?CCL74
2019-04-14 13:09:16 -07:00
PRINTI "are"
2019-04-14 13:11:30 -07:00
JUMP ?CND72
?CCL74: PRINTI "is"
?CND72: PRINTI "n't here.]"
2019-04-14 13:09:16 -07:00
CRLF
2019-04-14 13:11:30 -07:00
JUMP ?CND41
?CCL67: ZERO? TMP \?CND41
2019-04-14 13:09:16 -07:00
CALL REFERRING
2019-04-14 13:11:30 -07:00
JUMP ?CND41
?CCL64: ZERO? PTBL /?CCL78
2019-04-14 13:09:16 -07:00
GET P-PRSO,CNT >OBJ1
2019-04-14 13:11:30 -07:00
JUMP ?CND76
?CCL78: GET P-PRSI,CNT >OBJ1
?CND76: ZERO? PTBL /?CCL81
2019-04-14 13:09:56 -07:00
SET 'PRSO,OBJ1
2019-04-14 13:11:30 -07:00
JUMP ?CND79
?CCL81: SET 'PRSO,OBJ
?CND79: ZERO? PTBL /?CCL84
2019-04-14 13:09:56 -07:00
SET 'PRSI,OBJ
2019-04-14 13:11:30 -07:00
JUMP ?CND82
?CCL84: SET 'PRSI,OBJ1
?CND82: GRTR? NUM,1 /?CCL86
2019-04-14 13:09:16 -07:00
GET P-ITBL,P-NC1
GET STACK,0
2019-04-14 13:11:30 -07:00
EQUAL? STACK,W?ALL,W?BOTH,W?EVERYT \?CND85
?CCL86: CALL DONT-ALL,OBJ1
ZERO? STACK \?PRG60
EQUAL? OBJ1,IT \?CCL94
2019-04-14 13:09:16 -07:00
PRINTD P-IT-OBJECT
2019-04-14 13:11:30 -07:00
JUMP ?CND92
?CCL94: EQUAL? OBJ1,HIM \?CCL96
2019-04-14 13:09:16 -07:00
PRINTD P-HIM-OBJECT
2019-04-14 13:11:30 -07:00
JUMP ?CND92
?CCL96: PRINTD OBJ1
?CND92: PRINTI ": "
?CND85: SET 'TMP,TRUE-VALUE
CALL PERFORM,PRSA,PRSO,PRSI >V
EQUAL? V,M-FATAL \?PRG60
SET 'P-CONT,FALSE-VALUE
SET 'QUOTE-FLAG,FALSE-VALUE
?CND41: EQUAL? V,M-FATAL \?CND99
2019-04-14 13:09:16 -07:00
SET 'P-CONT,FALSE-VALUE
2019-04-14 13:11:30 -07:00
?CND99: CALL CLOCKER-VERB?
ZERO? STACK /?CCL103
EQUAL? PRSA,V?TELL /?CCL103
ZERO? P-WON /?CCL103
2019-04-14 13:09:16 -07:00
CALL RUNNING?,I-SPACETRUCK
2019-04-14 13:11:30 -07:00
ZERO? STACK /?CND107
LESS? SPACETRUCK-COUNTER,5 \?CND107
2019-04-14 13:09:16 -07:00
SET 'C-ELAPSED,240
2019-04-14 13:11:30 -07:00
?CND107: GETP HERE,P?ACTION
2019-04-14 13:09:16 -07:00
CALL STACK,M-END >V
JUMP ?CND1
2019-04-14 13:11:30 -07:00
?CCL103: SET 'C-ELAPSED,0
2019-04-14 13:09:16 -07:00
JUMP ?CND1
2019-04-14 13:09:56 -07:00
?CCL3: SET 'P-CONT,FALSE-VALUE
2019-04-14 13:11:30 -07:00
?CND1: ZERO? P-WON /?CND111
2019-04-14 13:09:16 -07:00
ADD INTERNAL-MOVES,C-ELAPSED >INTERNAL-MOVES
2019-04-14 13:11:30 -07:00
FSET? CHRONOMETER,WORNBIT \?CCL115
LESS? DAY,3 \?CCL118
2019-04-14 13:09:16 -07:00
SET 'MOVES,INTERNAL-MOVES
2019-04-14 13:11:30 -07:00
JUMP ?CND113
?CCL118: SET 'MOVES,9947
JUMP ?CND113
?CCL115: SET 'MOVES,0
?CND113: ZERO? C-ELAPSED /?CND119
2019-04-14 13:09:16 -07:00
CALL CLOCKER >V
2019-04-14 13:11:30 -07:00
?CND119: SET 'POSTPONE-ATTACK,FALSE-VALUE
2019-04-14 13:09:56 -07:00
SET 'FLOYD-TRYTAKEN,FALSE-VALUE
2019-04-14 13:09:16 -07:00
SET 'P-PRSA-WORD,FALSE-VALUE
2019-04-14 13:11:30 -07:00
SET 'P-NUMBER,0
2019-04-14 13:09:16 -07:00
SET 'PRSA,FALSE-VALUE
SET 'PRSO,FALSE-VALUE
SET 'PRSI,FALSE-VALUE
2019-04-14 13:11:30 -07:00
?CND111: SET 'C-ELAPSED,7
2019-04-14 13:09:56 -07:00
RETURN C-ELAPSED
2019-04-14 13:09:16 -07:00
.FUNCT DONT-ALL,OBJ1,L
LOC OBJ1 >L
2019-04-14 13:09:56 -07:00
EQUAL? OBJ1,NOT-HERE-OBJECT \?CCL3
2019-04-14 13:09:16 -07:00
INC 'P-NOT-HERE
RTRUE
2019-04-14 13:09:56 -07:00
?CCL3: EQUAL? PRSA,V?TAKE \?CCL5
ZERO? PRSI /?CCL5
2019-04-14 13:09:16 -07:00
IN? PRSO,PRSI \TRUE
2019-04-14 13:09:56 -07:00
?CCL5: CALL ACCESSIBLE?,OBJ1
2019-04-14 13:09:16 -07:00
ZERO? STACK /TRUE
EQUAL? P-GETFLAGS,P-ALL \FALSE
2019-04-14 13:09:56 -07:00
ZERO? PRSI /?CCL15
2019-04-14 13:09:16 -07:00
EQUAL? PRSO,PRSI /TRUE
2019-04-14 13:09:56 -07:00
?CCL15: EQUAL? PRSA,V?TAKE \?CCL19
FSET? OBJ1,TAKEBIT /?CCL22
2019-04-14 13:09:16 -07:00
FSET? OBJ1,TRYTAKEBIT \TRUE
2019-04-14 13:09:56 -07:00
?CCL22: EQUAL? L,WINNER,HERE,PRSI /?CCL26
2019-04-14 13:09:16 -07:00
LOC WINNER
2019-04-14 13:09:56 -07:00
EQUAL? L,STACK /?CCL26
2019-04-14 13:09:16 -07:00
FSET? L,SURFACEBIT \TRUE
FSET? L,TAKEBIT /TRUE
RFALSE
2019-04-14 13:09:56 -07:00
?CCL26: ZERO? PRSI \FALSE
2019-04-14 13:09:16 -07:00
CALL ULTIMATELY-IN?,PRSO
ZERO? STACK /FALSE
RTRUE
2019-04-14 13:09:56 -07:00
?CCL19: EQUAL? PRSA,V?PUT-ON,V?PUT,V?DROP /?PRD41
EQUAL? PRSA,V?SGIVE,V?GIVE \?CCL39
?PRD41: IN? OBJ1,WINNER \TRUE
?CCL39: EQUAL? PRSA,V?PUT-ON,V?PUT \FALSE
2019-04-14 13:09:16 -07:00
IN? PRSO,WINNER /FALSE
CALL ULTIMATELY-IN?,PRSO,PRSI
ZERO? STACK \TRUE
RFALSE
.FUNCT CLOCKER-VERB?
EQUAL? PROTAGONIST,WINNER \TRUE
EQUAL? PRSA,V?SCORE,V?HELP,V?VERSION /FALSE
EQUAL? PRSA,V?$COMMAND,V?$UNRECORD,V?$RECORD /FALSE
EQUAL? PRSA,V?RESTORE,V?SAVE,V?$RANDOM /FALSE
EQUAL? PRSA,V?SCRIPT,V?QUIT,V?RESTART /FALSE
EQUAL? PRSA,V?SUPER-BRIEF,V?BRIEF,V?UNSCRIPT /FALSE
2019-04-14 13:09:56 -07:00
EQUAL? PRSA,V?VERBOSE /FALSE
RTRUE
2019-04-14 13:09:16 -07:00
.FUNCT FAKE-ORPHAN,IT-WAS-USED=0,TMP,?TMP1
CALL ORPHAN,P-SYNTAX,FALSE-VALUE
GET P-OTBL,P-VERBN >TMP
PRINTI "[Be specific: Wh"
2019-04-14 13:09:56 -07:00
ZERO? IT-WAS-USED /?CCL3
2019-04-14 13:09:16 -07:00
PRINTI "at object"
JUMP ?CND1
2019-04-14 13:09:56 -07:00
?CCL3: PRINTC 111
2019-04-14 13:09:16 -07:00
?CND1: PRINTI " do you want to "
2019-04-14 13:09:56 -07:00
ZERO? TMP \?CCL6
2019-04-14 13:09:16 -07:00
PRINTI "tell"
2019-04-14 13:09:56 -07:00
JUMP ?CND4
?CCL6: GETB P-VTBL,2
ZERO? STACK \?CCL8
2019-04-14 13:09:16 -07:00
GET TMP,0
PRINTB STACK
2019-04-14 13:09:56 -07:00
JUMP ?CND4
?CCL8: GETB TMP,2 >?TMP1
2019-04-14 13:09:16 -07:00
GETB TMP,3
CALL WORD-PRINT,?TMP1,STACK
PUTB P-VTBL,2,0
2019-04-14 13:09:56 -07:00
?CND4: SET 'P-OFLAG,TRUE-VALUE
2019-04-14 13:09:16 -07:00
SET 'P-WON,FALSE-VALUE
GETB P-SYNTAX,P-SPREP1
CALL PREP-PRINT,STACK
PRINTR "?]"
.FUNCT PERFORM,A,O=0,I=0,V,OA,OO,OI
2019-04-14 13:11:30 -07:00
SET 'OA,PRSA
2019-04-14 13:09:16 -07:00
SET 'OO,PRSO
SET 'OI,PRSI
SET 'PRSA,A
2019-04-14 13:11:30 -07:00
ZERO? P-WALK-DIR \?CND1
EQUAL? IT,O,I \?CND1
2019-04-14 13:09:16 -07:00
CALL VISIBLE?,P-IT-OBJECT
2019-04-14 13:11:30 -07:00
ZERO? STACK /?CCL7
EQUAL? IT,O \?CCL10
2019-04-14 13:09:16 -07:00
SET 'O,P-IT-OBJECT
2019-04-14 13:11:30 -07:00
JUMP ?CND1
?CCL10: SET 'I,P-IT-OBJECT
?CND1: ZERO? P-WALK-DIR \?CND16
EQUAL? HIM,O,I \?CND16
2019-04-14 13:09:16 -07:00
CALL VISIBLE?,P-HIM-OBJECT
2019-04-14 13:11:30 -07:00
ZERO? STACK /?CCL22
EQUAL? HIM,O \?CCL25
2019-04-14 13:09:16 -07:00
SET 'O,P-HIM-OBJECT
2019-04-14 13:11:30 -07:00
JUMP ?CND16
?CCL7: ZERO? I \?CCL13
2019-04-14 13:09:56 -07:00
CALL FAKE-ORPHAN,TRUE-VALUE
2019-04-14 13:09:16 -07:00
RETURN 8
2019-04-14 13:11:30 -07:00
?CCL13: CALL REFERRING
2019-04-14 13:09:16 -07:00
RETURN 8
2019-04-14 13:11:30 -07:00
?CCL25: SET 'I,P-HIM-OBJECT
?CND16: SET 'PRSO,O
2019-04-14 13:09:16 -07:00
SET 'PRSI,I
2019-04-14 13:11:30 -07:00
EQUAL? A,V?WALK /?CCL33
EQUAL? NOT-HERE-OBJECT,PRSO,PRSI \?CCL33
2019-04-14 13:09:16 -07:00
CALL D-APPLY,STR?1,NOT-HERE-OBJECT-F >V
2019-04-14 13:11:30 -07:00
ZERO? V /?CCL33
2019-04-14 13:09:16 -07:00
SET 'P-WON,FALSE-VALUE
2019-04-14 13:11:30 -07:00
JUMP ?CND31
?CCL22: ZERO? I \?CCL28
2019-04-14 13:09:56 -07:00
CALL FAKE-ORPHAN
RETURN 8
2019-04-14 13:11:30 -07:00
?CCL28: CALL REFERRING,TRUE-VALUE
2019-04-14 13:09:56 -07:00
RETURN 8
2019-04-14 13:11:30 -07:00
?CCL33: SET 'O,PRSO
2019-04-14 13:09:16 -07:00
SET 'I,PRSI
CALL THIS-IS-IT,PRSI
CALL THIS-IS-IT,PRSO
GETP WINNER,P?ACTION
CALL D-APPLY,STR?2,STACK >V
2019-04-14 13:11:30 -07:00
ZERO? V \?CND31
2019-04-14 13:09:16 -07:00
GET PREACTIONS,A
CALL D-APPLY,STR?3,STACK >V
2019-04-14 13:11:30 -07:00
ZERO? V \?CND31
ZERO? I /?CCL43
2019-04-14 13:09:16 -07:00
GETP I,P?ACTION
CALL D-APPLY,STR?4,STACK >V
2019-04-14 13:11:30 -07:00
ZERO? V \?CND31
?CCL43: ZERO? O /?CCL47
EQUAL? A,V?WALK /?CCL47
2019-04-14 13:09:16 -07:00
GETP O,P?ACTION
CALL D-APPLY,STR?5,STACK >V
2019-04-14 13:11:30 -07:00
ZERO? V \?CND31
?CCL47: GET ACTIONS,A
2019-04-14 13:09:16 -07:00
CALL D-APPLY,FALSE-VALUE,STACK >V
2019-04-14 13:11:30 -07:00
ZERO? V /?CND31
?CND31: SET 'PRSA,OA
2019-04-14 13:09:16 -07:00
SET 'PRSO,OO
SET 'PRSI,OI
RETURN V
.FUNCT D-APPLY,STR,FCN,FOO=0,RES
ZERO? FCN /FALSE
2019-04-14 13:11:30 -07:00
ZERO? FOO /?CCL6
2019-04-14 13:09:56 -07:00
CALL FCN,FOO >RES
2019-04-14 13:09:16 -07:00
RETURN RES
2019-04-14 13:11:30 -07:00
?CCL6: CALL FCN >RES
2019-04-14 13:09:16 -07:00
RETURN RES
.FUNCT DEQUEUE,RTN
CALL QUEUED?,RTN >RTN
ZERO? RTN /FALSE
PUT RTN,C-RTN,0
RTRUE
.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-TICK
ZERO? STACK /FALSE
RETURN C
?CND3: ADD C,C-INTLEN >C
JUMP ?PRG1
.FUNCT RUNNING?,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-TICK
ZERO? STACK /FALSE
GET C,C-TICK
2019-04-14 13:09:56 -07:00
GRTR? STACK,1 /FALSE
RTRUE
2019-04-14 13:09:16 -07:00
?CND3: ADD C,C-INTLEN >C
JUMP ?PRG1
.FUNCT QUEUE,RTN,TICK,C,E,INT=0
ADD C-TABLE,C-TABLELEN >E
ADD C-TABLE,C-INTS >C
2019-04-14 13:09:56 -07:00
?PRG1: EQUAL? C,E \?CCL5
ZERO? INT /?CCL8
2019-04-14 13:09:16 -07:00
SET 'C,INT
JUMP ?CND6
2019-04-14 13:09:56 -07:00
?CCL8: LESS? C-INTS,C-INTLEN \?CND9
2019-04-14 13:09:16 -07:00
PRINTI "Bug2"
CRLF
2019-04-14 13:09:56 -07:00
?CND9: SUB C-INTS,C-INTLEN >C-INTS
LESS? C-INTS,C-MAXINTS \?CND11
2019-04-14 13:09:16 -07:00
SET 'C-MAXINTS,C-INTS
2019-04-14 13:09:56 -07:00
?CND11: ADD C-TABLE,C-INTS >INT
2019-04-14 13:09:16 -07:00
?CND6: PUT INT,C-RTN,RTN
JUMP ?REP2
2019-04-14 13:09:56 -07:00
?CCL5: GET C,C-RTN
EQUAL? STACK,RTN \?CCL14
2019-04-14 13:09:16 -07:00
SET 'INT,C
2019-04-14 13:09:56 -07:00
?REP2: GRTR? INT,CLOCK-HAND \?CND16
ADD TICK,3
SUB 0,STACK >TICK
?CND16: PUT INT,C-TICK,TICK
RETURN INT
?CCL14: GET C,C-RTN
2019-04-14 13:09:16 -07:00
ZERO? STACK \?CND3
SET 'INT,C
?CND3: ADD C,C-INTLEN >C
JUMP ?PRG1
2019-04-14 13:09:56 -07:00
.FUNCT CLOCKER,E,TICK,RTN,FLG=0,Q?=0,OWINNER,X
2019-04-14 13:09:16 -07:00
ADD C-TABLE,C-INTS >CLOCK-HAND
ADD C-TABLE,C-TABLELEN >E
SET 'OWINNER,WINNER
SET 'WINNER,PROTAGONIST
2019-04-14 13:09:56 -07:00
?PRG1: EQUAL? CLOCK-HAND,E \?CCL5
2019-04-14 13:09:16 -07:00
SET 'CLOCK-HAND,E
SET 'WINNER,OWINNER
RETURN FLG
2019-04-14 13:09:56 -07:00
?CCL5: GET CLOCK-HAND,C-RTN
2019-04-14 13:09:16 -07:00
ZERO? STACK /?CND3
GET CLOCK-HAND,C-TICK >TICK
2019-04-14 13:09:56 -07:00
LESS? TICK,-1 \?CCL9
2019-04-14 13:09:16 -07:00
SUB 0,TICK
SUB STACK,3
PUT CLOCK-HAND,C-TICK,STACK
SET 'Q?,CLOCK-HAND
JUMP ?CND3
2019-04-14 13:09:56 -07:00
?CCL9: ZERO? TICK /?CND3
GRTR? TICK,0 \?CND11
2019-04-14 13:09:16 -07:00
SUB TICK,C-ELAPSED >TICK
2019-04-14 13:09:56 -07:00
LESS? TICK,0 \?CND13
2019-04-14 13:09:16 -07:00
SET 'TICK,0
2019-04-14 13:09:56 -07:00
?CND13: PUT CLOCK-HAND,C-TICK,TICK
?CND11: ZERO? TICK /?CND15
2019-04-14 13:09:16 -07:00
SET 'Q?,CLOCK-HAND
2019-04-14 13:09:56 -07:00
?CND15: GRTR? TICK,0 /?CND3
2019-04-14 13:09:16 -07:00
GET CLOCK-HAND,C-RTN >RTN
2019-04-14 13:09:56 -07:00
ZERO? TICK \?CND19
2019-04-14 13:09:16 -07:00
PUT CLOCK-HAND,C-RTN,0
2019-04-14 13:09:56 -07:00
?CND19: CALL RTN >X
ZERO? X /?CND21
2019-04-14 13:09:16 -07:00
SET 'FLG,TRUE-VALUE
2019-04-14 13:09:56 -07:00
?CND21: ZERO? Q? \?CND3
2019-04-14 13:09:16 -07:00
GET CLOCK-HAND,C-RTN
ZERO? STACK /?CND3
SET 'Q?,TRUE-VALUE
?CND3: ADD CLOCK-HAND,C-INTLEN >CLOCK-HAND
ZERO? Q? \?PRG1
ADD C-INTS,C-INTLEN >C-INTS
JUMP ?PRG1
.ENDI