mirror of
https://github.com/historicalsource/moonmist.git
synced 2026-01-30 05:24:35 +00:00
Final Revision
This commit is contained in:
349
misc.zap
Normal file
349
misc.zap
Normal file
@@ -0,0 +1,349 @@
|
||||
|
||||
|
||||
.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
|
||||
Reference in New Issue
Block a user