moonmist/misc.zap
historicalsource a2025f6d6c Final Revision
2019-04-14 13:37:43 -04:00

350 lines
6.6 KiB
Plaintext

.FUNCT GO
START::
?FCN: CALL V-VERSION
CALL INTRO
CALL MAIN-LOOP
JUMP ?FCN
.FUNCT PRINTT,OBJ
EQUAL? OBJ,TURN \?CCL3
LESS? 1,P-NUMBER \?CCL3
PRINTC 32
PRINTN P-NUMBER
PRINTI " minutes"
RTRUE
?CCL3: EQUAL? OBJ,WINDOW \?CCL9
PRINTI " the window"
RTRUE
?CCL9: CALL THE?,OBJ
PRINTC 32
PRINTD OBJ
RTRUE
.FUNCT THE?,OBJ
FSET? OBJ,NARTICLEBIT /?CND1
IN? OBJ,ROOMS /?PRG8
FSET? OBJ,SEENBIT \?CCL5
?PRG8: PRINTI " the"
JUMP ?CND1
?CCL5: FSET? OBJ,VOWELBIT \?PRG14
PRINTI " an"
JUMP ?CND1
?PRG14: PRINTI " a"
?CND1: FSET OBJ,SEENBIT
RTRUE
.FUNCT START-SENTENCE,OBJ
CALL THIS-IS-IT,OBJ
EQUAL? OBJ,PLAYER \?CCL3
PRINTI "You"
RTRUE
?CCL3: EQUAL? OBJ,NIGHTLAMP \?CCL7
PRINTI "Your lamp"
RTRUE
?CCL7: EQUAL? OBJ,LUGGAGE \?CCL11
PRINTI "Your luggage"
RTRUE
?CCL11: EQUAL? OBJ,BED \?CCL15
PRINTI "Your bed"
RTRUE
?CCL15: EQUAL? OBJ,YOUR-COLOR \?CCL19
PRINTI "Your favorite color"
RTRUE
?CCL19: EQUAL? OBJ,YOUR-ROOM \?CCL23
PRINTI "Your room"
RTRUE
?CCL23: EQUAL? OBJ,YOUR-BATHROOM \?CCL27
PRINTI "Your bathroom"
RTRUE
?CCL27: EQUAL? OBJ,YOUR-CLOSET \?CCL31
PRINTI "Your secret entrance"
RTRUE
?CCL31: EQUAL? OBJ,DINNER \?CND1
PRINTI "Your dinner"
RTRUE
?CND1: FSET? OBJ,NARTICLEBIT /?CND37
FSET? OBJ,SEENBIT \?CCL41
PRINTI "The "
JUMP ?CND37
?CCL41: FSET? OBJ,VOWELBIT \?PRG49
PRINTI "An "
JUMP ?CND37
?PRG49: PRINTI "A "
?CND37: FSET OBJ,SEENBIT
PRINTD OBJ
RTRUE
.FUNCT PRINTA,O
FSET? O,NARTICLEBIT /?PRG11
FSET? O,VOWELBIT \?PRG9
PRINTI "an "
JUMP ?PRG11
?PRG9: PRINTI "a "
?PRG11: PRINTD O
RTRUE
.FUNCT THIS-IS-IT,OBJ
EQUAL? OBJ,FALSE-VALUE,NOT-HERE-OBJECT,PLAYER /TRUE
EQUAL? OBJ,INTDIR,GLOBAL-HERE,ROOMS /TRUE
EQUAL? PRSA,V?WALK \?CND1
EQUAL? OBJ,PRSO /TRUE
?CND1: FSET? OBJ,PERSONBIT /?CCL11
GET P-ADJW,NOW-PRSI
PUT P-IT-WORDS,0,STACK
GET P-NAMW,NOW-PRSI
PUT P-IT-WORDS,1,STACK
FSET IT,TOUCHBIT
SET 'P-IT-OBJECT,OBJ
RTRUE
?CCL11: FSET? OBJ,FEMALE \?CCL13
FSET HER,TOUCHBIT
SET 'P-HER-OBJECT,OBJ
RTRUE
?CCL13: FSET HIM,TOUCHBIT
SET 'P-HIM-OBJECT,OBJ
RTRUE
.FUNCT NO-PRONOUN?,OBJ,CAP=0
EQUAL? OBJ,PLAYER /FALSE
FSET? OBJ,PERSONBIT /?CCL5
EQUAL? OBJ,P-IT-OBJECT \?CND1
FSET? IT,TOUCHBIT \?CND1
RFALSE
?CCL5: FSET? OBJ,FEMALE \?CCL11
EQUAL? OBJ,P-HER-OBJECT \?CND1
FSET? HER,TOUCHBIT \?CND1
RFALSE
?CCL11: EQUAL? OBJ,P-HIM-OBJECT \?CND1
FSET? HIM,TOUCHBIT /FALSE
?CND1: ZERO? CAP \?CCL22
CALL PRINTT,OBJ
JUMP ?CND20
?CCL22: EQUAL? CAP,1,TRUE-VALUE \?CND20
CALL START-SENTENCE,OBJ
?CND20: CALL THIS-IS-IT,OBJ
RTRUE
.FUNCT HE-SHE-IT,OBJ,CAP=0,VERB=0
CALL NO-PRONOUN?,OBJ,CAP
ZERO? STACK \?CND1
FSET? OBJ,PERSONBIT /?CCL5
ZERO? CAP \?CCL8
PRINTI " it"
JUMP ?CND1
?CCL8: EQUAL? CAP,1,TRUE-VALUE \?CND1
PRINTI "It"
JUMP ?CND1
?CCL5: EQUAL? OBJ,PLAYER \?CCL15
ZERO? CAP \?CCL18
PRINTI " you"
JUMP ?CND1
?CCL18: EQUAL? CAP,1,TRUE-VALUE \?CND1
PRINTI "You"
JUMP ?CND1
?CCL15: FSET? OBJ,FEMALE \?CCL25
ZERO? CAP \?CCL28
PRINTI " she"
JUMP ?CND1
?CCL28: EQUAL? CAP,1,TRUE-VALUE \?CND1
PRINTI "She"
JUMP ?CND1
?CCL25: ZERO? CAP \?CCL36
PRINTI " he"
JUMP ?CND1
?CCL36: EQUAL? CAP,1,TRUE-VALUE \?CND1
PRINTI "He"
?CND1: ZERO? VERB /FALSE
PRINTC 32
EQUAL? OBJ,PLAYER \?PRG68
EQUAL? VERB,STR?1 \?CCL51
PRINTI "are"
RTRUE
?CCL51: EQUAL? VERB,STR?2 \?CCL55
PRINTI "have"
RTRUE
?CCL55: EQUAL? VERB,STR?3 \?CCL59
PRINTI "try"
RTRUE
?CCL59: EQUAL? VERB,STR?4 \?PRG66
PRINTI "empty"
RTRUE
?PRG66: PRINT VERB
RTRUE
?PRG68: PRINT VERB
EQUAL? VERB,STR?5,STR?6,STR?7 /?PRG74
EQUAL? VERB,STR?3,STR?4 \?CND70
?PRG74: PRINTC 101
?CND70: EQUAL? VERB,STR?1,STR?2 /FALSE
PRINTC 115
RTRUE
.FUNCT HIM-HER-IT,OBJ,CAP=0,POSSESS?=0
CALL NO-PRONOUN?,OBJ,CAP
ZERO? STACK /?CCL3
ZERO? POSSESS? /TRUE
PRINTI "'s"
RTRUE
?CCL3: FSET? OBJ,PERSONBIT /?CCL9
ZERO? CAP \?PRG15
PRINTI " it"
JUMP ?CND10
?PRG15: PRINTI "It"
?CND10: ZERO? POSSESS? /TRUE
PRINTC 115
RTRUE
?CCL9: EQUAL? OBJ,PLAYER \?CCL22
ZERO? CAP \?PRG28
PRINTI " you"
JUMP ?CND23
?PRG28: PRINTI "You"
?CND23: ZERO? POSSESS? /TRUE
PRINTC 114
RTRUE
?CCL22: FSET? OBJ,FEMALE \?CCL35
ZERO? CAP \?PRG41
PRINTI " her"
RTRUE
?PRG41: PRINTI "Her"
RTRUE
?CCL35: ZERO? POSSESS? /?CCL45
ZERO? CAP \?PRG51
PRINTI " his"
RTRUE
?PRG51: PRINTI "His"
RTRUE
?CCL45: ZERO? CAP \?PRG58
PRINTI " him"
RTRUE
?PRG58: PRINTI "Him"
RTRUE
.FUNCT QUEUE,RTN,TICK,CINT
CALL INT,RTN >CINT
PUT CINT,C-TICK,TICK
PUT CINT,C-ENABLED?,1
RETURN CINT
.FUNCT INT,RTN,DEMON=0,E,C,INT
ADD C-TABLE,C-TABLELEN >E
ADD C-TABLE,C-INTS >C
?PRG1: EQUAL? C,E \?CCL5
SUB C-INTS,C-INTLEN >C-INTS
ADD C-TABLE,C-INTS >INT
PUT INT,C-RTN,RTN
RETURN INT
?CCL5: GET C,C-RTN
EQUAL? STACK,RTN \?CND3
RETURN C
?CND3: ADD C,C-INTLEN >C
JUMP ?PRG1
.FUNCT QUEUED?,RTN,C
CALL INT,RTN >C
GET C,C-ENABLED?
ZERO? STACK /FALSE
GET C,C-TICK
RSTACK
.FUNCT CLOCKER,C,E,TICK,FLG=0,VAL
ZERO? CLOCK-WAIT /?CND1
SET 'CLOCK-WAIT,FALSE-VALUE
RFALSE
?CND1: IGRTR? 'PRESENT-TIME,1139 \?CND3
CALL TIMES-UP
?CND3: IGRTR? 'MOVES,59 \?CND5
SET 'MOVES,0
IGRTR? 'SCORE,23 \?CND5
SET 'SCORE,0
?CND5: ADD C-TABLE,C-INTS >C
ADD C-TABLE,C-TABLELEN >E
?PRG9: EQUAL? C,E \?CCL13
RETURN FLG
?CCL13: GET C,C-ENABLED?
ZERO? STACK /?CND11
GET C,C-TICK >TICK
ZERO? TICK /?CND11
SUB TICK,1
PUT C,C-TICK,STACK
GRTR? TICK,1 /?CND11
GET C,C-RTN
CALL STACK >VAL
ZERO? VAL /?CND11
ZERO? FLG /?CCL22
EQUAL? VAL,M-FATAL \?CND11
?CCL22: SET 'FLG,VAL
?CND11: ADD C,C-INTLEN >C
JUMP ?PRG9
.FUNCT I-FOLLOW,GARG=0,FLG=0,CNT=0,GT,VAL=0
?PRG1: IGRTR? 'CNT,GHOST-NEW-C /?REP2
GET GOAL-TABLES,CNT >GT
GET GT,GOAL-S
ZERO? STACK /?PRG1
GET GT,GOAL-ENABLE
ZERO? STACK /?PRG1
GET CHARACTER-TABLE,CNT
CALL FOLLOW-GOAL,STACK >VAL
ZERO? VAL /?PRG1
EQUAL? FLG,M-FATAL /?PRG1
SET 'FLG,VAL
JUMP ?PRG1
?REP2: RETURN FLG
.FUNCT I-ATTENTION,GARG=0,FLG=0,CNT=0,ATT,GT,PER,RM
?PRG1: IGRTR? 'CNT,GHOST-NEW-C /?REP2
GET GOAL-TABLES,CNT >GT
GET GT,ATTENTION >ATT
GRTR? ATT,0 \?PRG1
DEC 'ATT
GET CHARACTER-TABLE,CNT >PER
EQUAL? PER,CONFESSED,CAPTOR,FOLLOWER /?PRG1
SET 'GOAL-PERSON,PER
ZERO? ATT \?CCL11
LESS? BED-TIME,PRESENT-TIME /?CTR13
GET GT,GOAL-FUNCTION
EQUAL? STACK,X-RETIRES \?CCL14
?CTR13: ADD 1,CNT
GET CHAR-ROOM-TABLE,STACK >RM
IN? PER,RM \?CCL19
CALL GOODNIGHT,RM,PER
JUMP ?CND9
?CCL19: PUT GT,GOAL-FUNCTION,X-RETIRES
CALL ESTABLISH-GOAL,PER,RM
JUMP ?CND9
?CCL14: GET GT,GOAL-QUEUED >RM
ZERO? RM /?CCL21
PUT GT,GOAL-QUEUED,0
CALL ESTABLISH-GOAL,PER,RM
JUMP ?CND9
?CCL21: PUTP PER,P?LDESC,17
PUT GT,GOAL-ENABLE,1
JUMP ?CND9
?CCL11: EQUAL? ATT,1 \?CND9
IN? PER,HERE \?CND9
GET GT,GOAL-FUNCTION
CALL D-APPLY,STR?8,STACK,G-IMPATIENT
ZERO? STACK /?CND9
SET 'FLG,TRUE-VALUE
?CND9: PUT GT,ATTENTION,ATT
JUMP ?PRG1
?REP2: RETURN FLG
.ENDI