mirror of
https://github.com/historicalsource/plunderedhearts
synced 2024-04-29 23:49:36 +03:00
563 lines
12 KiB
Plaintext
563 lines
12 KiB
Plaintext
|
|
|
|
.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
|
|
FSET? OBJ,NARTICLEBIT /?CTR2
|
|
EQUAL? OBJ,PANTS,RUM,SALTS \?CCL3
|
|
?CTR2: PRINTC 32
|
|
JUMP ?CND1
|
|
?CCL3: FSET? OBJ,VOWELBIT \?CCL7
|
|
PRINTI " an "
|
|
JUMP ?CND1
|
|
?CCL7: PRINTI " a "
|
|
?CND1: PRINTD OBJ
|
|
RTRUE
|
|
|
|
|
|
.FUNCT TPRINT,OBJ
|
|
FSET? OBJ,NARTICLEBIT \?CCL3
|
|
PRINTC 32
|
|
JUMP ?CND1
|
|
?CCL3: PRINTI " the "
|
|
?CND1: PRINTD OBJ
|
|
RTRUE
|
|
|
|
|
|
.FUNCT CTPRINT,OBJ
|
|
PRINTI "The "
|
|
PRINTD OBJ
|
|
RTRUE
|
|
|
|
|
|
.FUNCT TPRINT-PRSO
|
|
CALL TPRINT,PRSO
|
|
RSTACK
|
|
|
|
|
|
.FUNCT TPRINT-PRSI
|
|
CALL TPRINT,PRSI
|
|
RSTACK
|
|
|
|
|
|
.FUNCT ARPRINT,OBJ
|
|
CALL APRINT,OBJ
|
|
PRINT PCR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT TRPRINT,OBJ
|
|
CALL TPRINT,OBJ
|
|
PRINT PCR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT GO
|
|
START::
|
|
|
|
?FCN: PRINTI ">SHOOT THE PIRATE
|
|
Trembling, you fire the heavy arquebus. You hear its loud report over the roaring wind, yet the dark figure still approaches. The gun falls from your nerveless hands.
|
|
""You won't kill me,"" he says, stepping over the weapon. ""Not when I am the only protection you have from Jean Lafond.""
|
|
"
|
|
PRINT NUTBROWN
|
|
PRINTI "Lips curving,"
|
|
PRINT EYES-RAKE
|
|
PRINTI ". You are intensely aware of the strength of his hard seaworn body, of the deep sea blue of his eyes. And then his mouth is on yours, lips parted, demanding, and you arch into his kiss...
|
|
He presses you against him, head bent. ""But who, my dear,"" he whispers into your hair, ""will protect you from me?""
|
|
"
|
|
CRLF
|
|
PRINT HIT-RETURN
|
|
PRINTI "begin.]"
|
|
CRLF
|
|
READ P-INBUF,P-LEXV
|
|
USL
|
|
CALL CLEAR-SCREEN,11
|
|
SET 'HERE,CABIN
|
|
USL
|
|
CALL V-VERSION
|
|
CRLF
|
|
PRINTI "LATE ONE SPRING NIGHT IN THE WEST INDIES...
|
|
|
|
A crash overhead! Pirates are boarding the Lafond Deux! The first mate hurries you into Captain Davis's cabin.
|
|
""Good, you brought the girl,"" Davis smirks. ""She'll keep the pirates busy. She was only a tool of Lafond's, anyway. Let me just find that cof--"" A man on deck screams in agony and Davis starts. ""Let's go."" The captain thrusts you on the bed and walks out, locking the door.
|
|
His laugh echoes. ""Best get comfortable, girl. You're likely to be there for the rest of your life."""
|
|
CRLF
|
|
CRLF
|
|
CALL V-LOOK
|
|
CALL MAIN-LOOP
|
|
JUMP ?FCN
|
|
|
|
|
|
.FUNCT CLEAR-SCREEN,CNT=24
|
|
?PRG1: CRLF
|
|
DEC 'CNT
|
|
ZERO? CNT \?PRG1
|
|
RTRUE
|
|
|
|
|
|
.FUNCT MAIN-LOOP,TRASH
|
|
?PRG1: CALL MAIN-LOOP-1 >TRASH
|
|
JUMP ?PRG1
|
|
|
|
|
|
.FUNCT MAIN-LOOP-1,ICNT,OCNT,NUM,CNT=0,OBJ=0,TBL,V,PTBL=1,OBJ1,TMP,ONUM,?TMP1
|
|
CALL PARSER >P-WON
|
|
ZERO? P-WON /?CCL3
|
|
GETB P-PRSI,P-MATCHLEN >ICNT
|
|
GETB P-PRSO,P-MATCHLEN >OCNT
|
|
ZERO? P-IT-OBJECT /?CND4
|
|
CALL ACCESSIBLE?,P-IT-OBJECT
|
|
ZERO? STACK /?CND4
|
|
SET 'TMP,FALSE-VALUE
|
|
?PRG8: IGRTR? 'CNT,ICNT /?REP9
|
|
GETB P-PRSI,CNT
|
|
EQUAL? STACK,IT \?PRG8
|
|
CALL TOO-DARK-FOR-IT?
|
|
ZERO? STACK \TRUE
|
|
PUTB P-PRSI,CNT,P-IT-OBJECT
|
|
SET 'TMP,TRUE-VALUE
|
|
?REP9: ZERO? TMP \?CND17
|
|
SET 'CNT,0
|
|
?PRG19: IGRTR? 'CNT,OCNT /?CND17
|
|
GETB P-PRSO,CNT
|
|
EQUAL? STACK,IT \?PRG19
|
|
CALL TOO-DARK-FOR-IT?
|
|
ZERO? STACK \TRUE
|
|
PUTB P-PRSO,CNT,P-IT-OBJECT
|
|
?CND17: SET 'CNT,0
|
|
?CND4: GETB P-SYNTAX,P-SBITS
|
|
BAND STACK,P-SONUMS >ONUM
|
|
ZERO? OCNT /?CTR29
|
|
ZERO? ICNT \?CCL30
|
|
EQUAL? ONUM,2 \?CCL30
|
|
?CTR29: SET 'NUM,0
|
|
JUMP ?CND28
|
|
?CCL30: GRTR? OCNT,1 \?CCL36
|
|
SET 'TBL,P-PRSO
|
|
ZERO? ICNT \?CCL39
|
|
SET 'OBJ,FALSE-VALUE
|
|
JUMP ?CND37
|
|
?CCL39: GETB P-PRSI,1 >OBJ
|
|
?CND37: SET 'NUM,OCNT
|
|
JUMP ?CND28
|
|
?CCL36: GRTR? ICNT,1 \?CCL41
|
|
SET 'PTBL,FALSE-VALUE
|
|
SET 'TBL,P-PRSI
|
|
GETB P-PRSO,1 >OBJ
|
|
SET 'NUM,ICNT
|
|
JUMP ?CND28
|
|
?CCL41: SET 'NUM,1
|
|
?CND28: ZERO? OBJ \?CND42
|
|
EQUAL? ICNT,1 \?CND42
|
|
GETB P-PRSI,1 >OBJ
|
|
?CND42: EQUAL? PRSA,V?WALK \?CCL48
|
|
CALL PERFORM-PRSA,PRSO >V
|
|
JUMP ?CND46
|
|
?CCL48: ZERO? NUM \?CCL50
|
|
GETB P-SYNTAX,P-SBITS
|
|
BAND STACK,P-SONUMS
|
|
ZERO? STACK \?CCL53
|
|
CALL PERFORM-PRSA >V
|
|
SET 'PRSO,FALSE-VALUE
|
|
JUMP ?CND46
|
|
?CCL53: PRINTI "There isn't anything to "
|
|
GET P-ITBL,P-VERBN >TMP
|
|
EQUAL? PRSA,V?TELL \?CCL56
|
|
PRINTI "talk to"
|
|
JUMP ?CND54
|
|
?CCL56: ZERO? P-OFLAG \?CTR57
|
|
ZERO? P-MERGED /?CCL58
|
|
?CTR57: GET TMP,0
|
|
PRINTB STACK
|
|
JUMP ?CND54
|
|
?CCL58: GETB TMP,2 >?TMP1
|
|
GETB TMP,3
|
|
CALL WORD-PRINT,?TMP1,STACK
|
|
?CND54: PRINTC 33
|
|
CRLF
|
|
SET 'V,FALSE-VALUE
|
|
CALL STOP
|
|
JUMP ?CND46
|
|
?CCL50: SET 'P-NOT-HERE,0
|
|
SET 'P-MULT,FALSE-VALUE
|
|
GRTR? NUM,1 \?CND61
|
|
SET 'P-MULT,TRUE-VALUE
|
|
?CND61: SET 'TMP,FALSE-VALUE
|
|
?PRG63: IGRTR? 'CNT,NUM \?CCL67
|
|
GRTR? P-NOT-HERE,0 \?CCL70
|
|
PRINTI "[The "
|
|
EQUAL? P-NOT-HERE,NUM /?CND71
|
|
PRINTI "other "
|
|
?CND71: PRINTI "object"
|
|
EQUAL? P-NOT-HERE,1 /?CND73
|
|
PRINTC 115
|
|
?CND73: PRINTI " that you mentioned "
|
|
EQUAL? P-NOT-HERE,1 /?CCL77
|
|
PRINTI "are"
|
|
JUMP ?CND75
|
|
?CCL77: PRINTI "is"
|
|
?CND75: PRINTI "n't here.]"
|
|
CRLF
|
|
JUMP ?CND46
|
|
?CCL70: ZERO? TMP \?CND46
|
|
CALL REFERRING
|
|
JUMP ?CND46
|
|
?CCL67: ZERO? PTBL /?CCL81
|
|
GETB P-PRSO,CNT >OBJ1
|
|
JUMP ?CND79
|
|
?CCL81: GETB P-PRSI,CNT >OBJ1
|
|
?CND79: ZERO? PTBL /?CCL84
|
|
SET 'PRSO,OBJ1
|
|
JUMP ?CND82
|
|
?CCL84: SET 'PRSO,OBJ
|
|
?CND82: ZERO? PTBL /?CCL87
|
|
SET 'PRSI,OBJ
|
|
JUMP ?CND85
|
|
?CCL87: SET 'PRSI,OBJ1
|
|
?CND85: GRTR? NUM,1 /?CCL89
|
|
GET P-ITBL,P-NC1
|
|
GET STACK,0
|
|
EQUAL? STACK,W?ALL,W?EVERYT \?CND88
|
|
?CCL89: CALL DONT-ALL,OBJ1
|
|
ZERO? STACK \?PRG63
|
|
EQUAL? OBJ1,IT \?CCL97
|
|
PRINTD P-IT-OBJECT
|
|
JUMP ?CND95
|
|
?CCL97: EQUAL? OBJ1,HIM \?CCL99
|
|
PRINTD P-HIM-OBJECT
|
|
JUMP ?CND95
|
|
?CCL99: EQUAL? OBJ1,HER \?CCL101
|
|
PRINTD P-HER-OBJECT
|
|
JUMP ?CND95
|
|
?CCL101: PRINTD OBJ1
|
|
?CND95: PRINTI ": "
|
|
?CND88: SET 'TMP,TRUE-VALUE
|
|
CALL PERFORM-PRSA,PRSO,PRSI >V
|
|
EQUAL? V,M-FATAL \?PRG63
|
|
?CND46: EQUAL? V,M-FATAL \?CND104
|
|
SET 'P-CONT,FALSE-VALUE
|
|
?CND104: CALL CLOCKER-VERB?
|
|
ZERO? STACK /?CND1
|
|
EQUAL? PRSA,V?TELL /?CND1
|
|
ZERO? P-WON /?CND1
|
|
GETP HERE,P?ACTION
|
|
CALL STACK,M-END >V
|
|
JUMP ?CND1
|
|
?CCL3: SET 'P-CONT,FALSE-VALUE
|
|
?CND1: ZERO? P-WON /FALSE
|
|
CALL CLOCKER-VERB?
|
|
ZERO? STACK /?CND114
|
|
CALL CLOCKER >V
|
|
?CND114: SET 'PRSA,FALSE-VALUE
|
|
SET 'PRSO,FALSE-VALUE
|
|
SET 'PRSI,FALSE-VALUE
|
|
RETURN PRSI
|
|
|
|
|
|
.FUNCT TOO-DARK-FOR-IT?
|
|
ZERO? LIT \FALSE
|
|
CALL HELD?,P-IT-OBJECT,WINNER
|
|
ZERO? STACK \FALSE
|
|
IN? WINNER,P-IT-OBJECT /FALSE
|
|
PRINT TOO-DARK
|
|
CRLF
|
|
RTRUE
|
|
|
|
|
|
.FUNCT DONT-ALL,OBJ1,L
|
|
LOC OBJ1 >L
|
|
EQUAL? OBJ1,NOT-HERE-OBJECT \?CCL3
|
|
INC 'P-NOT-HERE
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSA,V?TAKE \?CCL5
|
|
ZERO? PRSI /?CCL5
|
|
IN? PRSO,PRSI \TRUE
|
|
?CCL5: CALL ACCESSIBLE?,OBJ1
|
|
ZERO? STACK /TRUE
|
|
EQUAL? P-GETFLAGS,P-ALL \FALSE
|
|
ZERO? PRSI /?CCL15
|
|
EQUAL? PRSO,PRSI /TRUE
|
|
?CCL15: EQUAL? PRSA,V?TAKE \?CCL19
|
|
FSET? OBJ1,TAKEBIT /?CCL22
|
|
FSET? OBJ1,TRYTAKEBIT \TRUE
|
|
?CCL22: EQUAL? L,WINNER,HERE,PRSI /?CCL26
|
|
LOC WINNER
|
|
EQUAL? L,STACK /?CCL26
|
|
FSET? L,SURFACEBIT \TRUE
|
|
FSET? L,TAKEBIT /TRUE
|
|
RFALSE
|
|
?CCL26: EQUAL? OBJ1,BOOKS-GLOBAL,POWER /TRUE
|
|
ZERO? PRSI \FALSE
|
|
CALL HELD?,PRSO
|
|
ZERO? STACK /FALSE
|
|
RTRUE
|
|
?CCL19: EQUAL? PRSA,V?PUT-ON,V?PUT,V?DROP /?PRD43
|
|
EQUAL? PRSA,V?SGIVE,V?GIVE \?CCL41
|
|
?PRD43: IN? OBJ1,WINNER \TRUE
|
|
?CCL41: EQUAL? PRSA,V?PUT-ON,V?PUT \FALSE
|
|
IN? PRSO,WINNER /FALSE
|
|
CALL HELD?,PRSO,PRSI
|
|
ZERO? STACK \TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT CLOCKER-VERB?
|
|
EQUAL? PRSA,V?$RECORD,V?HELP,V?VERSION /FALSE
|
|
EQUAL? PRSA,V?$RANDOM,V?$COMMAND,V?$UNRECORD /FALSE
|
|
EQUAL? PRSA,V?RESTART,V?RESTORE,V?SAVE /FALSE
|
|
EQUAL? PRSA,V?UNSCRIPT,V?SCRIPT,V?QUIT /FALSE
|
|
EQUAL? PRSA,V?VERBOSE,V?SUPER-BRIEF,V?BRIEF /FALSE
|
|
EQUAL? PRSA,V?SCORE /FALSE
|
|
RTRUE
|
|
|
|
|
|
.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"
|
|
ZERO? IT-WAS-USED /?CCL3
|
|
PRINTI "at object"
|
|
JUMP ?CND1
|
|
?CCL3: PRINTC 111
|
|
?CND1: PRINT DO-YOU-WANT
|
|
ZERO? TMP \?CCL6
|
|
PRINTI "tell"
|
|
JUMP ?CND4
|
|
?CCL6: GETB P-VTBL,2
|
|
ZERO? STACK \?CCL8
|
|
GET TMP,0
|
|
PRINTB STACK
|
|
JUMP ?CND4
|
|
?CCL8: GETB TMP,2 >?TMP1
|
|
GETB TMP,3
|
|
CALL WORD-PRINT,?TMP1,STACK
|
|
PUTB P-VTBL,2,0
|
|
?CND4: SET 'P-OFLAG,TRUE-VALUE
|
|
SET 'P-WON,FALSE-VALUE
|
|
GETB P-SYNTAX,P-SPREP1
|
|
CALL PREP-PRINT,STACK
|
|
PRINTR "?]"
|
|
|
|
|
|
.FUNCT PERFORM-PRSA,O=0,I=0
|
|
CALL PERFORM,PRSA,O,I
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PERFORM,A,O=0,I=0,V,OA,OO,OI
|
|
SET 'OA,PRSA
|
|
SET 'OO,PRSO
|
|
SET 'OI,PRSI
|
|
SET 'PRSA,A
|
|
EQUAL? IT,O,I \?CND1
|
|
EQUAL? A,V?WALK /?CND1
|
|
CALL VISIBLE?,P-IT-OBJECT
|
|
ZERO? STACK /?CCL7
|
|
EQUAL? IT,O \?CCL10
|
|
SET 'O,P-IT-OBJECT
|
|
JUMP ?CND1
|
|
?CCL10: SET 'I,P-IT-OBJECT
|
|
?CND1: EQUAL? HIM,O,I \?CND16
|
|
EQUAL? A,V?WALK /?CND16
|
|
CALL VISIBLE?,P-HIM-OBJECT
|
|
ZERO? STACK /?CCL22
|
|
EQUAL? HIM,O \?CCL25
|
|
SET 'O,P-HIM-OBJECT
|
|
JUMP ?CND16
|
|
?CCL7: ZERO? I \?CCL13
|
|
CALL FAKE-ORPHAN,TRUE-VALUE
|
|
RETURN 8
|
|
?CCL13: CALL REFERRING
|
|
RETURN 8
|
|
?CCL25: SET 'I,P-HIM-OBJECT
|
|
?CND16: EQUAL? HER,O,I \?CND31
|
|
EQUAL? A,V?WALK /?CND31
|
|
CALL VISIBLE?,P-HER-OBJECT
|
|
ZERO? STACK /?CCL37
|
|
EQUAL? HER,O \?CCL40
|
|
SET 'O,P-HER-OBJECT
|
|
JUMP ?CND31
|
|
?CCL22: ZERO? I \?CCL28
|
|
CALL FAKE-ORPHAN
|
|
RETURN 8
|
|
?CCL28: CALL REFERRING,TRUE-VALUE
|
|
RETURN 8
|
|
?CCL40: SET 'I,P-HER-OBJECT
|
|
?CND31: SET 'PRSO,O
|
|
SET 'PRSI,I
|
|
EQUAL? A,V?WALK /?CCL48
|
|
EQUAL? NOT-HERE-OBJECT,PRSO,PRSI \?CCL48
|
|
CALL D-APPLY,STR?232,NOT-HERE-OBJECT-F >V
|
|
ZERO? V /?CCL48
|
|
SET 'P-WON,FALSE-VALUE
|
|
JUMP ?CND46
|
|
?CCL37: ZERO? I \?CCL43
|
|
CALL FAKE-ORPHAN
|
|
RETURN 8
|
|
?CCL43: CALL REFERRING,TRUE-VALUE
|
|
RETURN 8
|
|
?CCL48: SET 'O,PRSO
|
|
SET 'I,PRSI
|
|
CALL THIS-IS-IT,PRSI
|
|
CALL THIS-IS-IT,PRSO
|
|
GETP WINNER,P?ACTION
|
|
CALL D-APPLY,STR?233,STACK >V
|
|
ZERO? V \?CND46
|
|
LOC WINNER
|
|
GETP STACK,P?ACTION
|
|
CALL D-APPLY,STR?234,STACK,M-BEG >V
|
|
ZERO? V \?CND46
|
|
GET PREACTIONS,A
|
|
CALL D-APPLY,STR?235,STACK >V
|
|
ZERO? V \?CND46
|
|
ZERO? I /?CCL60
|
|
GETP I,P?ACTION
|
|
CALL D-APPLY,STR?236,STACK >V
|
|
ZERO? V \?CND46
|
|
?CCL60: ZERO? O /?CCL64
|
|
EQUAL? A,V?WALK /?CCL64
|
|
GETP O,P?ACTION
|
|
CALL D-APPLY,STR?237,STACK >V
|
|
ZERO? V \?CND46
|
|
?CCL64: GET ACTIONS,A
|
|
CALL D-APPLY,FALSE-VALUE,STACK >V
|
|
ZERO? V /?CND46
|
|
?CND46: SET 'PRSA,OA
|
|
SET 'PRSO,OO
|
|
SET 'PRSI,OI
|
|
RETURN V
|
|
|
|
|
|
.FUNCT D-APPLY,STR,FCN,FOO=0,RES
|
|
ZERO? FCN /FALSE
|
|
ZERO? FOO /?CCL6
|
|
CALL FCN,FOO >RES
|
|
RETURN RES
|
|
?CCL6: CALL FCN >RES
|
|
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
|
|
CALL QUEUED?,RTN >C
|
|
ZERO? C /FALSE
|
|
GET C,C-TICK
|
|
GRTR? STACK,1 \TRUE
|
|
RFALSE
|
|
|
|
|
|
.FUNCT QUEUE,RTN,TICK,C,E,INT=0
|
|
ADD C-TABLE,C-TABLELEN >E
|
|
ADD C-TABLE,C-INTS >C
|
|
?PRG1: EQUAL? C,E \?CCL5
|
|
ZERO? INT /?CCL8
|
|
SET 'C,INT
|
|
JUMP ?CND6
|
|
?CCL8: LESS? C-INTS,C-INTLEN \?CND9
|
|
PRINTI "**Too many ints!**"
|
|
CRLF
|
|
?CND9: SUB C-INTS,C-INTLEN >C-INTS
|
|
LESS? C-INTS,C-MAXINTS \?CND11
|
|
SET 'C-MAXINTS,C-INTS
|
|
?CND11: ADD C-TABLE,C-INTS >INT
|
|
?CND6: PUT INT,C-RTN,RTN
|
|
JUMP ?REP2
|
|
?CCL5: GET C,C-RTN
|
|
EQUAL? STACK,RTN \?CCL14
|
|
SET 'INT,C
|
|
?REP2: ZERO? CLOCK-HAND /?CND16
|
|
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
|
|
ZERO? STACK \?CND3
|
|
SET 'INT,C
|
|
?CND3: ADD C,C-INTLEN >C
|
|
JUMP ?PRG1
|
|
|
|
|
|
.FUNCT CLOCKER,E,TICK,RTN,FLG=0,Q?=0,OWINNER
|
|
ZERO? CLOCK-WAIT /?CND1
|
|
SET 'CLOCK-WAIT,FALSE-VALUE
|
|
RFALSE
|
|
?CND1: ADD C-TABLE,C-INTS >CLOCK-HAND
|
|
ADD C-TABLE,C-TABLELEN >E
|
|
SET 'OWINNER,WINNER
|
|
SET 'WINNER,PROTAGONIST
|
|
?PRG3: EQUAL? CLOCK-HAND,E \?CCL7
|
|
SET 'CLOCK-HAND,E
|
|
INC 'MOVES
|
|
SET 'WINNER,OWINNER
|
|
RETURN FLG
|
|
?CCL7: GET CLOCK-HAND,C-RTN
|
|
ZERO? STACK /?CND5
|
|
GET CLOCK-HAND,C-TICK >TICK
|
|
LESS? TICK,-1 \?CCL11
|
|
SUB 0,TICK
|
|
SUB STACK,3
|
|
PUT CLOCK-HAND,C-TICK,STACK
|
|
SET 'Q?,CLOCK-HAND
|
|
JUMP ?CND5
|
|
?CCL11: ZERO? TICK /?CND5
|
|
GRTR? TICK,0 \?CND13
|
|
DEC 'TICK
|
|
PUT CLOCK-HAND,C-TICK,TICK
|
|
?CND13: ZERO? TICK /?CND15
|
|
SET 'Q?,CLOCK-HAND
|
|
?CND15: GRTR? TICK,0 /?CND5
|
|
GET CLOCK-HAND,C-RTN >RTN
|
|
ZERO? TICK \?CND19
|
|
PUT CLOCK-HAND,C-RTN,0
|
|
?CND19: CALL RTN
|
|
ZERO? STACK /?CND21
|
|
SET 'FLG,TRUE-VALUE
|
|
?CND21: ZERO? Q? \?CND5
|
|
GET CLOCK-HAND,C-RTN
|
|
ZERO? STACK /?CND5
|
|
SET 'Q?,TRUE-VALUE
|
|
?CND5: ADD CLOCK-HAND,C-INTLEN >CLOCK-HAND
|
|
ZERO? Q? \?PRG3
|
|
ADD C-INTS,C-INTLEN >C-INTS
|
|
JUMP ?PRG3
|
|
|
|
.ENDI
|