1
0
mirror of https://github.com/historicalsource/seastalker.git synced 2026-04-18 10:06:08 +00:00

Final Revision

This commit is contained in:
historicalsource
2019-04-13 22:35:09 -04:00
parent 18809a2b43
commit 7ef7f3e553
79 changed files with 42023 additions and 2483 deletions

View File

@@ -7,7 +7,7 @@
.FUNCT I-PROMPT-2
ZERO? P-PROMPT /FALSE
SET 'P-PROMPT,0
SET 'P-PROMPT,FALSE-VALUE
CRLF
PRINTI "(Are you tired of seeing ""What next?"" Well, you won't see it any more.)"
CRLF
@@ -18,17 +18,17 @@
RFALSE
.FUNCT PARSER,PTR=P-LEXSTART,WORD,VAL=0,VERB=0,LEN,DIR=0,NW=0,LW=0,NUM,SCNT,CNT=-1
.FUNCT PARSER,PTR=P-LEXSTART,WRD,VAL=0,VERB=0,OF-FLAG=0,LEN,DIR=0,NW=0,LW=0,NUM,SCNT,CNT=-1
?PRG1: IGRTR? 'CNT,P-ITBLLEN \?ELS5
JUMP ?REP2
?ELS5: PUT P-ITBL,CNT,0
JUMP ?PRG1
?REP2: SET 'P-NUMBER,-1
SET 'P-NAM,0
SET 'P-ADJ,0
SET 'P-ADVERB,0
SET 'P-MERGED,0
SET 'P-WHAT-IGNORED,0
SET 'P-NAM,FALSE-VALUE
SET 'P-ADJ,FALSE-VALUE
SET 'P-ADVERB,FALSE-VALUE
SET 'P-MERGED,FALSE-VALUE
SET 'P-WHAT-IGNORED,FALSE-VALUE
PUT P-PRSO,P-MATCHLEN,0
PUT P-PRSI,P-MATCHLEN,0
PUT P-BUTS,P-MATCHLEN,0
@@ -40,12 +40,12 @@
LOC WINNER >HERE
?CND8: ZERO? P-CONT /?ELS18
SET 'PTR,P-CONT
SET 'P-CONT,0
SET 'P-CONT,FALSE-VALUE
EQUAL? PRSA,V?TELL /?CND16
CRLF
JUMP ?CND16
?ELS18: SET 'WINNER,PLAYER
SET 'QUOTE-FLAG,0
SET 'QUOTE-FLAG,FALSE-VALUE
LOC WINNER
FSET? STACK,VEHBIT /?CND25
LOC WINNER >HERE
@@ -85,43 +85,43 @@
CRLF
RFALSE
?CND59: SET 'LEN,P-LEN
SET 'P-DIR,0
SET 'P-DIR,FALSE-VALUE
SET 'P-NCN,0
SET 'P-GETFLAGS,0
PUT P-ITBL,P-VERBN,0
?PRG64: DLESS? 'P-LEN,0 \?ELS68
SET 'QUOTE-FLAG,0
SET 'QUOTE-FLAG,FALSE-VALUE
JUMP ?REP65
?ELS68: GET P-LEXV,PTR >WORD
CALL BUZZER-WORD?,WORD
?ELS68: GET P-LEXV,PTR >WRD
CALL BUZZER-WORD?,WRD
ZERO? STACK \FALSE
ZERO? WORD \?THN73
CALL NUMBER?,PTR >WORD
ZERO? WORD \?THN73
CALL NAME?,PTR >WORD
ZERO? WORD /?ELS72
?THN73: EQUAL? WORD,W?TO \?ELS77
ZERO? WRD \?THN73
CALL NUMBER?,PTR >WRD
ZERO? WRD \?THN73
CALL NAME?,PTR >WRD
ZERO? WRD /?ELS72
?THN73: EQUAL? WRD,W?TO \?ELS77
EQUAL? VERB,ACT?TELL,ACT?ASK \?ELS77
SET 'VERB,ACT?TELL
SET 'WORD,W?QUOTE
SET 'WRD,W?QUOTE
JUMP ?CND75
?ELS77: EQUAL? WORD,W?THEN \?CND75
?ELS77: EQUAL? WRD,W?THEN \?CND75
ZERO? VERB \?CND75
PUT P-ITBL,P-VERB,ACT?TELL
PUT P-ITBL,P-VERBN,0
SET 'WORD,W?QUOTE
?CND75: EQUAL? WORD,W?THEN,W?. /?THN87
EQUAL? WORD,W?QUOTE \?ELS86
?THN87: EQUAL? WORD,W?QUOTE \?CND89
SET 'WRD,W?QUOTE
?CND75: EQUAL? WRD,W?THEN,W?PERIOD /?THN87
EQUAL? WRD,W?QUOTE \?ELS86
?THN87: EQUAL? WRD,W?QUOTE \?CND89
ZERO? QUOTE-FLAG /?ELS94
SET 'QUOTE-FLAG,0
SET 'QUOTE-FLAG,FALSE-VALUE
JUMP ?CND89
?ELS94: SET 'QUOTE-FLAG,1
?ELS94: SET 'QUOTE-FLAG,TRUE-VALUE
?CND89: ZERO? P-LEN /?THN98
ADD PTR,P-LEXELEN >P-CONT
?THN98: PUTB P-LEXV,P-LEXWORDS,P-LEN
JUMP ?REP65
?ELS86: CALL WT?,WORD,PS?DIRECTION,P1?DIRECTION >VAL
?ELS86: CALL WT?,WRD,PS?DIRECTION,P1?DIRECTION >VAL
ZERO? VAL /?ELS101
EQUAL? LEN,1 /?THN104
EQUAL? LEN,2 \?ELS107
@@ -130,7 +130,7 @@
GET P-LEXV,STACK >NW
EQUAL? NW,W?THEN,W?QUOTE \?ELS109
GRTR? LEN,2 /?THN104
?ELS109: EQUAL? NW,W?. \?ELS111
?ELS109: EQUAL? NW,W?PERIOD \?ELS111
GRTR? LEN,1 /?THN104
?ELS111: ZERO? QUOTE-FLAG /?ELS113
EQUAL? LEN,2 \?ELS113
@@ -142,18 +142,18 @@
ADD PTR,P-LEXELEN
PUT P-LEXV,STACK,W?THEN
?CND116: GRTR? LEN,2 /?CND66
SET 'QUOTE-FLAG,0
SET 'QUOTE-FLAG,FALSE-VALUE
JUMP ?REP65
?ELS101: CALL WT?,WORD,PS?VERB,P1?VERB >VAL
?ELS101: CALL WT?,WRD,PS?VERB,P1?VERB >VAL
ZERO? VAL /?ELS123
ZERO? VERB /?THN126
EQUAL? VERB,ACT?NAME \?ELS123
?THN126: EQUAL? VERB,ACT?NAME \?CND128
SET 'P-WHAT-IGNORED,1
SET 'P-WHAT-IGNORED,TRUE-VALUE
?CND128: SET 'VERB,VAL
PUT P-ITBL,P-VERB,VAL
PUT P-ITBL,P-VERBN,P-VTBL
PUT P-VTBL,0,WORD
PUT P-VTBL,0,WRD
MUL PTR,2
ADD STACK,2 >NUM
GETB P-LEXV,NUM
@@ -162,70 +162,80 @@
GETB P-LEXV,STACK
PUTB P-VTBL,3,STACK
JUMP ?CND66
?ELS123: CALL WT?,WORD,PS?PREPOSITION,0 >VAL
?ELS123: CALL WT?,WRD,PS?PREPOSITION,0 >VAL
ZERO? VAL \?THN133
EQUAL? WORD,W?ONE,W?A /?THN137
CALL WT?,WORD,PS?ADJECTIVE
EQUAL? WRD,W?ONE,W?A /?THN137
CALL WT?,WRD,PS?ADJECTIVE
ZERO? STACK \?THN137
CALL WT?,WORD,PS?OBJECT
CALL WT?,WRD,PS?OBJECT
ZERO? STACK /?ELS132
?THN137: SET 'VAL,0
?THN133: GRTR? P-LEN,0 \?ELS141
?THN137: SET 'VAL,0 \?ELS132
?THN133: GRTR? P-LEN,1 \?ELS141
ADD PTR,P-LEXELEN
GET P-LEXV,STACK
EQUAL? STACK,W?OF \?ELS141
EQUAL? VERB,ACT?MAKE /?ELS141
ZERO? VAL \?ELS141
EQUAL? WORD,W?ONE,W?A /?ELS141
EQUAL? WRD,W?ONE,W?A /?ELS141
SET 'OF-FLAG,TRUE-VALUE
JUMP ?CND66
?ELS141: ZERO? VAL /?ELS145
ZERO? P-LEN /?THN148
ADD PTR,2
GET P-LEXV,STACK
EQUAL? STACK,W?THEN,W?. \?ELS145
EQUAL? STACK,W?THEN,W?PERIOD \?ELS145
?THN148: LESS? P-NCN,2 \?CND66
PUT P-ITBL,P-PREP1,VAL
PUT P-ITBL,P-PREP1N,WORD
PUT P-ITBL,P-PREP1N,WRD
JUMP ?CND66
?ELS145: EQUAL? P-NCN,2 \?ELS154
PRINTI "(I found too many nouns in that sentence!)"
CRLF
RFALSE
?ELS154: INC 'P-NCN
CALL CLAUSE,PTR,VAL,WORD >PTR
CALL CLAUSE,PTR,VAL,WRD >PTR
ZERO? PTR /FALSE
LESS? PTR,0 \?CND66
SET 'QUOTE-FLAG,0
SET 'QUOTE-FLAG,FALSE-VALUE
JUMP ?REP65
?ELS132: EQUAL? WORD,W?CLOSELY \?ELS165
?ELS132: EQUAL? WRD,W?CLOSELY \?ELS165
SET 'P-ADVERB,W?CAREFULLY
JUMP ?CND66
?ELS165: EQUAL? WORD,W?CAREFULLY,W?QUIETLY,W?PRIVATELY /?THN168
EQUAL? WORD,W?SLOWLY,W?QUICKLY,W?BRIEFLY \?ELS167
?THN168: SET 'P-ADVERB,WORD
?ELS165: EQUAL? WRD,W?CAREFULLY,W?QUIETLY,W?PRIVATELY /?THN168
EQUAL? WRD,W?SLOWLY,W?QUICKLY,W?BRIEFLY \?ELS167
?THN168: SET 'P-ADVERB,WRD
JUMP ?CND66
?ELS167: CALL WT?,WORD,PS?BUZZ-WORD
ZERO? STACK /?ELS171
?ELS167: EQUAL? WRD,W?OF \?ELS171
ZERO? OF-FLAG /?THN175
ADD PTR,P-LEXELEN
GET P-LEXV,STACK
EQUAL? STACK,W?PERIOD,W?THEN \?ELS174
?THN175: CALL CANT-USE,PTR
RFALSE
?ELS174: SET 'OF-FLAG,FALSE-VALUE
JUMP ?CND66
?ELS171: CALL CANT-USE,PTR
?ELS171: CALL WT?,WRD,PS?BUZZ-WORD
ZERO? STACK /?ELS180
JUMP ?CND66
?ELS180: CALL CANT-USE,PTR
RFALSE
?ELS72: CALL UNKNOWN-WORD,PTR
RFALSE
?CND66: SET 'LW,WORD
?CND66: SET 'LW,WRD
ADD PTR,P-LEXELEN >PTR
JUMP ?PRG64
?REP65: ZERO? DIR /?CND176
?REP65: ZERO? DIR /?CND185
SET 'PRSA,V?WALK
SET 'PRSO,DIR
SET 'P-WALK-DIR,DIR
RTRUE
?CND176: SET 'P-WALK-DIR,0
ZERO? P-OFLAG /?CND180
RETURN TRUE-VALUE
?CND185: SET 'P-WALK-DIR,FALSE-VALUE
ZERO? P-OFLAG /?CND189
CALL ORPHAN-MERGE
?CND180: GET P-ITBL,P-VERB
ZERO? STACK \?CND184
?CND189: GET P-ITBL,P-VERB
ZERO? STACK \?CND193
PUT P-ITBL,P-VERB,ACT?$CALL
?CND184: CALL SYNTAX-CHECK
?CND193: CALL SYNTAX-CHECK
ZERO? STACK /FALSE
CALL SNARF-OBJECTS
ZERO? STACK /FALSE
@@ -247,14 +257,14 @@
RSTACK
.FUNCT CLAUSE,PTR,VAL,WORD,OFF,NUM,ANDFLG=0,FIRST??=1,NW,LW=0,?TMP1
.FUNCT CLAUSE,PTR,VAL,WRD,OFF,NUM,ANDFLG=0,FIRST??=1,NW,LW=0,?TMP1
SUB P-NCN,1
MUL STACK,2 >OFF
ZERO? VAL /?ELS3
ADD P-PREP1,OFF >NUM
PUT P-ITBL,NUM,VAL
ADD NUM,1
PUT P-ITBL,STACK,WORD
PUT P-ITBL,STACK,WRD
ADD PTR,P-LEXELEN >PTR
JUMP ?CND1
?ELS3: INC 'P-LEN
@@ -277,34 +287,34 @@
ADD P-LEXV,STACK
PUT P-ITBL,?TMP1,STACK
RETURN -1
?CND14: GET P-LEXV,PTR >WORD
CALL BUZZER-WORD?,WORD
?CND14: GET P-LEXV,PTR >WRD
CALL BUZZER-WORD?,WRD
ZERO? STACK \FALSE
ZERO? WORD \?THN22
CALL NUMBER?,PTR >WORD
ZERO? WORD \?THN22
CALL NAME?,PTR >WORD
ZERO? WORD /?ELS21
ZERO? WRD \?THN22
CALL NUMBER?,PTR >WRD
ZERO? WRD \?THN22
CALL NAME?,PTR >WRD
ZERO? WRD /?ELS21
?THN22: ZERO? P-LEN \?ELS26
SET 'NW,0
JUMP ?CND24
?ELS26: ADD PTR,P-LEXELEN
GET P-LEXV,STACK >NW
?CND24: EQUAL? WORD,W?OF \?CND29
?CND24: EQUAL? WRD,W?OF \?CND29
GET P-ITBL,P-VERB
EQUAL? STACK,ACT?MAKE \?CND29
PUT P-LEXV,PTR,W?WITH
SET 'WORD,W?WITH
?CND29: EQUAL? WORD,W?AND,W?COMMA \?ELS36
SET 'ANDFLG,1
SET 'WRD,W?WITH
?CND29: EQUAL? WRD,W?AND,W?COMMA \?ELS36
SET 'ANDFLG,TRUE-VALUE
JUMP ?CND17
?ELS36: EQUAL? WORD,W?ONE \?ELS38
?ELS36: EQUAL? WRD,W?ONE \?ELS38
EQUAL? NW,W?OF \?CND17
DEC 'P-LEN
ADD PTR,P-LEXELEN >PTR
JUMP ?CND17
?ELS38: EQUAL? WORD,W?THEN,W?. /?THN44
CALL WT?,WORD,PS?PREPOSITION
?ELS38: EQUAL? WRD,W?THEN,W?PERIOD /?THN44
CALL WT?,WRD,PS?PREPOSITION
ZERO? STACK /?ELS43
ZERO? FIRST?? \?ELS43
?THN44: INC 'P-LEN
@@ -317,18 +327,18 @@
?ELS43: ZERO? ANDFLG /?ELS49
GET P-ITBL,P-VERBN
ZERO? STACK /?THN52
CALL WT?,WORD,PS?DIRECTION
CALL WT?,WRD,PS?DIRECTION
ZERO? STACK \?THN52
CALL WT?,WORD,PS?VERB
CALL WT?,WRD,PS?VERB
ZERO? STACK /?ELS49
?THN52: SUB PTR,4 >PTR
ADD PTR,2
PUT P-LEXV,STACK,W?THEN
ADD P-LEN,2 >P-LEN
JUMP ?CND17
?ELS49: CALL WT?,WORD,PS?OBJECT
?ELS49: CALL WT?,WRD,PS?OBJECT
ZERO? STACK /?ELS55
CALL WT?,WORD,PS?ADJECTIVE,P1?ADJECTIVE
CALL WT?,WRD,PS?ADJECTIVE,P1?ADJECTIVE
ZERO? STACK /?ELS58
ZERO? NW /?ELS58
CALL WT?,NW,PS?OBJECT
@@ -342,22 +352,22 @@
ADD P-LEXV,STACK
PUT P-ITBL,?TMP1,STACK
RETURN PTR
?ELS62: SET 'ANDFLG,0
?ELS62: SET 'ANDFLG,FALSE-VALUE
JUMP ?CND17
?ELS55: CALL WT?,WORD,PS?ADJECTIVE
?ELS55: CALL WT?,WRD,PS?ADJECTIVE
ZERO? STACK \?CND17
CALL WT?,WORD,PS?BUZZ-WORD
CALL WT?,WRD,PS?BUZZ-WORD
ZERO? STACK /?ELS68
JUMP ?CND17
?ELS68: CALL WT?,WORD,PS?PREPOSITION
?ELS68: CALL WT?,WRD,PS?PREPOSITION
ZERO? STACK /?ELS72
JUMP ?CND17
?ELS72: CALL CANT-USE,PTR
RFALSE
?ELS21: CALL UNKNOWN-WORD,PTR
RFALSE
?CND17: SET 'LW,WORD
SET 'FIRST??,0
?CND17: SET 'LW,WRD
SET 'FIRST??,FALSE-VALUE
ADD PTR,P-LEXELEN >PTR
JUMP ?PRG12
@@ -401,7 +411,7 @@
.FUNCT ORPHAN-MERGE,CNT=-1,TEMP,VERB,BEG,END,ADJ=0,WRD,?TMP1
SET 'P-OFLAG,0
SET 'P-OFLAG,FALSE-VALUE
GET P-ITBL,P-VERB >VERB
ZERO? VERB /?ELS3
GET P-OTBL,P-VERB
@@ -413,67 +423,75 @@
GET P-OTBL,P-PREP1
EQUAL? TEMP,STACK /?THN13
ZERO? TEMP \FALSE
?THN13: GET P-ITBL,P-NC1
?THN13: ZERO? ADJ /?ELS17
ADD P-LEXV,2
PUT P-OTBL,P-NC1,STACK
ADD P-LEXV,6
PUT P-OTBL,P-NC1L,STACK
JUMP ?CND1
?ELS17: GET P-ITBL,P-NC1
PUT P-OTBL,P-NC1,STACK
GET P-ITBL,P-NC1L
PUT P-OTBL,P-NC1L,STACK
JUMP ?CND1
?ELS9: GET P-OTBL,P-NC2
EQUAL? STACK,1 \?ELS18
EQUAL? STACK,1 \?ELS24
GET P-ITBL,P-PREP1 >TEMP
GET P-OTBL,P-PREP2
EQUAL? TEMP,STACK /?THN22
EQUAL? TEMP,STACK /?THN28
ZERO? TEMP \FALSE
?THN22: GET P-ITBL,P-NC1
?THN28: GET P-ITBL,P-NC1
PUT P-OTBL,P-NC2,STACK
GET P-ITBL,P-NC1L
PUT P-OTBL,P-NC2L,STACK
SET 'P-NCN,2
JUMP ?CND1
?ELS18: ZERO? P-ACLAUSE /?CND1
EQUAL? P-NCN,1 /?ELS31
SET 'P-ACLAUSE,0
?ELS24: ZERO? P-ACLAUSE /?CND1
EQUAL? P-NCN,1 /?ELS37
SET 'P-ACLAUSE,FALSE-VALUE
RFALSE
?ELS31: GET P-ITBL,P-NC1 >BEG
?ELS37: GET P-ITBL,P-NC1 >BEG
GET P-ITBL,P-NC1L >END
?PRG34: EQUAL? BEG,END \?ELS38
ZERO? ADJ /?ELS41
?PRG40: EQUAL? BEG,END \?ELS44
ZERO? ADJ /?ELS47
CALL ACLAUSE-WIN,ADJ
JUMP ?CND29
?ELS41: SET 'P-ACLAUSE,0
JUMP ?CND35
?ELS47: SET 'P-ACLAUSE,FALSE-VALUE
RFALSE
?ELS38: ZERO? ADJ \?ELS46
?ELS44: ZERO? ADJ \?ELS52
GET BEG,0 >WRD
GETB WRD,P-PSOFF
BTST STACK,PS?ADJECTIVE \?ELS46
BTST STACK,PS?ADJECTIVE \?ELS52
SET 'ADJ,WRD
JUMP ?CND36
?ELS46: GETB WRD,P-PSOFF
BTST STACK,PS?OBJECT /?THN51
EQUAL? WRD,W?ONE \?CND36
?THN51: EQUAL? WRD,P-ANAM,W?ONE \FALSE
JUMP ?CND42
?ELS52: GETB WRD,P-PSOFF
BTST STACK,PS?OBJECT /?THN57
EQUAL? WRD,W?ONE \?CND42
?THN57: EQUAL? WRD,P-ANAM,W?ONE \FALSE
CALL ACLAUSE-WIN,ADJ
JUMP ?CND29
?CND36: ADD BEG,P-WORDLEN >BEG
JUMP ?PRG34
?CND29:
JUMP ?CND35
?CND42: ADD BEG,P-WORDLEN >BEG
JUMP ?PRG40
?CND35:
?CND1:
?PRG58: IGRTR? 'CNT,P-ITBLLEN \?ELS62
SET 'P-MERGED,1
?PRG64: IGRTR? 'CNT,P-ITBLLEN \?ELS68
SET 'P-MERGED,TRUE-VALUE
RTRUE
?ELS62: GET P-OTBL,CNT
?ELS68: GET P-OTBL,CNT
PUT P-ITBL,CNT,STACK
JUMP ?PRG58
JUMP ?PRG64
.FUNCT ACLAUSE-WIN,ADJ
GET P-OTBL,P-VERB
PUT P-ITBL,P-VERB,STACK
SET 'P-CCSRC,P-OTBL
ADD P-ACLAUSE,1
CALL CLAUSE-COPY,P-ACLAUSE,STACK,ADJ
GET P-OTBL,P-NC2
ZERO? STACK /?ELS2
SET 'P-NCN,2
?ELS2: SET 'P-ACLAUSE,0
?ELS2: SET 'P-ACLAUSE,FALSE-VALUE
RTRUE
@@ -486,20 +504,16 @@
.FUNCT UNKNOWN-WORD,PTR,BUF,?TMP1
GET UNKNOWN-MSGS,0
PRINT STACK
PRINTI "(I don't know the word """
MUL PTR,2 >BUF
ADD P-LEXV,BUF
GETB STACK,2 >?TMP1
ADD P-LEXV,BUF
GETB STACK,3
CALL WORD-PRINT,?TMP1,STACK
SET 'QUOTE-FLAG,0
SET 'P-OFLAG,0
GET UNKNOWN-MSGS,1
PRINT STACK
CRLF
RTRUE
SET 'QUOTE-FLAG,FALSE-VALUE
SET 'P-OFLAG,FALSE-VALUE
PRINTR """.)"
.FUNCT CANT-USE,PTR,BUF,?TMP1
@@ -512,9 +526,9 @@
CALL WORD-PRINT,?TMP1,STACK
PRINTI """ when you use it that way.)"
CRLF
SET 'QUOTE-FLAG,0
SET 'P-OFLAG,0
RTRUE
SET 'QUOTE-FLAG,FALSE-VALUE
SET 'P-OFLAG,FALSE-VALUE
RETURN P-OFLAG
.FUNCT SYNTAX-CHECK,SYN,LEN,NUM,OBJ,DRIVE1=0,DRIVE2=0,PREP,VERB,?TMP2,?TMP1
@@ -586,18 +600,18 @@
?ELS50: EQUAL? WINNER,PLAYER \?ELS57
CALL ORPHAN,DRIVE1,DRIVE2
PRINTI "(Wh"
EQUAL? VERB,ACT?WALK,ACT?CRAWL \?ELS64
PUSH STR?131
EQUAL? VERB,ACT?WALK \?ELS64
PUSH STR?122
JUMP ?CND60
?ELS64: PUSH STR?132
?ELS64: PUSH STR?123
?CND60: PRINT STACK
PRINTI " do you want to "
JUMP ?CND55
?ELS57: PRINTI "(Your command was not complete. Next time, type wh"
EQUAL? VERB,ACT?WALK \?ELS75
PUSH STR?131
PUSH STR?122
JUMP ?CND71
?ELS75: PUSH STR?132
?ELS75: PUSH STR?123
?CND71: PRINT STACK
PRINTI " you want "
PRINTD WINNER
@@ -611,11 +625,11 @@
?ELS86: GETB DRIVE2,P-SPREP2
?CND82: CALL PREP-PRINT,STACK
EQUAL? WINNER,PLAYER \?ELS92
SET 'P-OFLAG,1
SET 'P-OFLAG,TRUE-VALUE
PRINTI "?)"
CRLF
RFALSE
?ELS92: SET 'P-OFLAG,0
?ELS92: SET 'P-OFLAG,FALSE-VALUE
PRINTI ".)"
CRLF
RFALSE
@@ -672,24 +686,24 @@
.FUNCT BUFFER-PRINT,BEG,END,CP,NOSP=0,WRD,FIRST??=1,PN=0,?TMP1
?PRG1: EQUAL? BEG,END /TRUE
ZERO? NOSP /?ELS10
SET 'NOSP,0
SET 'NOSP,FALSE-VALUE
JUMP ?CND8
?ELS10: PRINTI " "
?CND8: GET BEG,0 >WRD
EQUAL? WRD,W?. \?ELS18
SET 'NOSP,1
EQUAL? WRD,W?PERIOD \?ELS18
SET 'NOSP,TRUE-VALUE
JUMP ?CND3
?ELS18: EQUAL? WRD,W?DR \?ELS20
PRINTI "Dr."
SET 'PN,1
SET 'PN,TRUE-VALUE
JUMP ?CND3
?ELS20: EQUAL? WRD,W?HIM,W?HER,W?ME \?ELS24
SET 'PN,1
SET 'PN,TRUE-VALUE
JUMP ?CND3
?ELS24: CALL CAPITAL-NOUN?,WRD
ZERO? STACK /?ELS26
CALL CAPITALIZE,BEG
SET 'PN,1
SET 'PN,TRUE-VALUE
JUMP ?CND3
?ELS26: ZERO? FIRST?? /?CND29
ZERO? PN \?CND29
@@ -717,7 +731,7 @@
?ELS50: GETB BEG,2 >?TMP1
GETB BEG,3
CALL WORD-PRINT,?TMP1,STACK
?CND36: SET 'FIRST??,0
?CND36: SET 'FIRST??,FALSE-VALUE
?CND3: ADD BEG,P-WORDLEN >BEG
JUMP ?PRG1
@@ -818,14 +832,14 @@
?CND1: SET 'P-GWIMBIT,GBIT
SET 'P-SLOCBITS,LBIT
PUT P-MERGE,P-MATCHLEN,0
CALL GET-OBJECT,P-MERGE,0
CALL GET-OBJECT,P-MERGE,FALSE-VALUE
ZERO? STACK /?ELS8
SET 'P-GWIMBIT,0
GET P-MERGE,P-MATCHLEN
EQUAL? STACK,1 \FALSE
GET P-MERGE,1 >OBJ
PRINTI "("
CALL PREP-PRINT,PREP,0
CALL PREP-PRINT,PREP,FALSE-VALUE
ZERO? STACK /?CND16
CALL THE?,OBJ
PRINTI " "
@@ -883,13 +897,14 @@
RETURN NTBL
.FUNCT SNARFEM,PTR,EPTR,TBL,AND=0,BUT=0,LEN,WV,WORD,NW
.FUNCT SNARFEM,PTR,EPTR,TBL,BUT=0,LEN,WV,WRD,NW
SET 'P-AND,FALSE-VALUE
SET 'P-GETFLAGS,0
SET 'P-CSPTR,PTR
SET 'P-CEPTR,EPTR
PUT P-BUTS,P-MATCHLEN,0
PUT TBL,P-MATCHLEN,0
GET PTR,0 >WORD
GET PTR,0 >WRD
?PRG1: EQUAL? PTR,EPTR \?ELS5
ZERO? BUT /?ORP9
PUSH BUT
@@ -898,9 +913,9 @@
?THN6: CALL GET-OBJECT,STACK
RETURN STACK
?ELS5: GET PTR,P-LEXELEN >NW
CALL BUZZER-WORD?,WORD
CALL BUZZER-WORD?,WRD
ZERO? STACK \FALSE
EQUAL? WORD,W?A,W?ONE \?ELS16
EQUAL? WRD,W?A,W?ONE \?ELS16
ZERO? P-ADJ \?ELS19
SET 'P-GETFLAGS,P-ONE
EQUAL? NW,W?OF \?CND3
@@ -915,8 +930,9 @@
ZERO? STACK /FALSE
ZERO? NW /TRUE
JUMP ?CND3
?ELS16: EQUAL? WORD,W?AND,W?COMMA \?ELS34
?ELS16: EQUAL? WRD,W?AND,W?COMMA \?ELS34
EQUAL? NW,W?AND,W?COMMA /?ELS34
SET 'P-AND,TRUE-VALUE
ZERO? BUT /?ORP42
PUSH BUT
JUMP ?THN39
@@ -924,29 +940,29 @@
?THN39: CALL GET-OBJECT,STACK
ZERO? STACK \?CND12
RFALSE
?ELS34: CALL WT?,WORD,PS?BUZZ-WORD
?ELS34: CALL WT?,WRD,PS?BUZZ-WORD
ZERO? STACK /?ELS44
JUMP ?CND3
?ELS44: EQUAL? WORD,W?AND,W?COMMA \?ELS46
?ELS44: EQUAL? WRD,W?AND,W?COMMA \?ELS46
JUMP ?CND3
?ELS46: EQUAL? WORD,W?OF \?ELS48
?ELS46: EQUAL? WRD,W?OF \?ELS48
ZERO? P-GETFLAGS \?CND12
SET 'P-GETFLAGS,P-INHIBIT
JUMP ?CND12
?ELS48: CALL WT?,WORD,PS?ADJECTIVE,P1?ADJECTIVE >WV
?ELS48: CALL WT?,WRD,PS?ADJECTIVE,P1?ADJECTIVE >WV
ZERO? WV /?ELS53
ZERO? P-ADJ \?ELS53
SET 'P-ADJ,WV
SET 'P-ADJN,WORD
SET 'P-ADJN,WRD
JUMP ?CND3
?ELS53: CALL WT?,WORD,PS?OBJECT,P1?OBJECT
?ELS53: CALL WT?,WRD,PS?OBJECT,P1?OBJECT
ZERO? STACK /?CND3
SET 'P-NAM,WORD
SET 'P-ONEOBJ,WORD
SET 'P-NAM,WRD
SET 'P-ONEOBJ,WRD
?CND12:
?CND3: EQUAL? PTR,EPTR /?PRG1
ADD PTR,P-WORDLEN >PTR
SET 'WORD,NW
SET 'WRD,NW
JUMP ?PRG1
@@ -960,11 +976,11 @@
CALL WT?,P-ADJN,PS?OBJECT,P1?OBJECT
ZERO? STACK /?ELS11
SET 'P-NAM,P-ADJN
SET 'P-ADJ,0
SET 'P-ADJ,FALSE-VALUE
JUMP ?CND4
?ELS11: CALL WT?,P-ADJN,PS?DIRECTION,P1?DIRECTION >BTS
ZERO? BTS /?CND4
SET 'P-ADJ,0
SET 'P-ADJ,FALSE-VALUE
PUT TBL,P-MATCHLEN,1
PUT TBL,1,INTDIR
SET 'P-DIRECTION,BTS
@@ -1027,8 +1043,8 @@
EQUAL? OBJ,NOT-HERE-OBJECT /FALSE
PUT TBL,1,OBJ
PUT TBL,P-MATCHLEN,1
SET 'P-NAM,0
SET 'P-ADJ,0
SET 'P-NAM,FALSE-VALUE
SET 'P-ADJ,FALSE-VALUE
RTRUE
?ELS68: ZERO? VRB /?ELS75
ZERO? P-NAM /?ELS75
@@ -1040,33 +1056,34 @@
?CND78: SET 'P-ACLAUSE,STACK
SET 'P-AADJ,P-ADJ
SET 'P-ANAM,P-NAM
CALL ORPHAN,0,0
SET 'P-OFLAG,1
CALL ORPHAN,FALSE-VALUE,FALSE-VALUE
SET 'P-OFLAG,TRUE-VALUE
JUMP ?CND66
?ELS75: ZERO? VRB /?CND66
CALL MISSING-NOUN,ADJ
?CND66: SET 'P-NAM,0
SET 'P-ADJ,0
?CND66: SET 'P-NAM,FALSE-VALUE
SET 'P-ADJ,FALSE-VALUE
RFALSE
?ELS53: ZERO? LEN \?ELS89
ZERO? GCHECK /?ELS89
ZERO? VRB /?CND92
SET 'P-SLOCBITS,XBITS
ZERO? LIT /?ELS98
CALL OBJ-FOUND,NOT-HERE-OBJECT,TBL
SET 'P-XNAM,P-NAM
SET 'P-XADJ,P-ADJ
SET 'P-XADJN,P-ADJN
SET 'P-NAM,0
SET 'P-ADJ,0
SET 'P-ADJN,0
SET 'P-NAM,FALSE-VALUE
SET 'P-ADJ,FALSE-VALUE
SET 'P-ADJN,FALSE-VALUE
RTRUE
?ELS98: PRINTI "(It's too dark to see!)"
CRLF
?CND92: SET 'P-NAM,0
SET 'P-ADJ,0
?CND92: SET 'P-NAM,FALSE-VALUE
SET 'P-ADJ,FALSE-VALUE
RFALSE
?ELS89: ZERO? LEN \?CND40
SET 'GCHECK,1
SET 'GCHECK,TRUE-VALUE
JUMP ?PRG28
?CND40: ZERO? P-ADJ /?CND106
ZERO? P-NAM \?CND106
@@ -1077,8 +1094,8 @@
PRINTI ".)"
CRLF
?CND106: SET 'P-SLOCBITS,XBITS
SET 'P-NAM,0
SET 'P-ADJ,0
SET 'P-NAM,FALSE-VALUE
SET 'P-ADJ,FALSE-VALUE
RTRUE
@@ -1121,14 +1138,15 @@
SET 'RLEN,LEN
PRINTI "(Which"
ZERO? P-OFLAG \?THN6
ZERO? P-MERGED /?ELS5
ZERO? P-MERGED \?THN6
ZERO? P-AND /?ELS5
?THN6: PRINTI " "
PRINTB P-NAM
JUMP ?CND3
?ELS5: EQUAL? TBL,P-PRSO \?ELS11
CALL CLAUSE-PRINT,P-NC1,P-NC1L,0
CALL CLAUSE-PRINT,P-NC1,P-NC1L,FALSE-VALUE
JUMP ?CND3
?ELS11: CALL CLAUSE-PRINT,P-NC2,P-NC2L,0
?ELS11: CALL CLAUSE-PRINT,P-NC2,P-NC2L,FALSE-VALUE
?CND3: PRINTI " do you mean,"
?PRG16: INC 'TLEN
GET TBL,TLEN >OBJ
@@ -1165,6 +1183,7 @@
?PRG15: MUL CNT,2
GET RMG,STACK
EQUAL? P-NAM,STACK \?ELS19
SET 'LAST-PSEUDO-LOC,HERE
MUL CNT,2
ADD STACK,1
GET RMG,STACK
@@ -1289,13 +1308,13 @@
?CND15: IN? OBJ,WINNER /?PRG8
SET 'PRSO,OBJ
FSET? OBJ,TRYTAKEBIT \?ELS27
SET 'TAKEN,1
SET 'TAKEN,TRUE-VALUE
JUMP ?CND25
?ELS27: CALL ITAKE,0
EQUAL? STACK,1 \?ELS29
SET 'TAKEN,0
?ELS27: CALL ITAKE,FALSE-VALUE
EQUAL? STACK,TRUE-VALUE \?ELS29
SET 'TAKEN,FALSE-VALUE
JUMP ?CND25
?ELS29: SET 'TAKEN,1
?ELS29: SET 'TAKEN,TRUE-VALUE
?CND25: ZERO? TAKEN /?ELS34
BTST BITS,SHAVE \?ELS34
PRINTI "(You aren't holding"
@@ -1379,28 +1398,6 @@
RFALSE
.FUNCT LIT?,RM,OHERE,LIT=0
SET 'P-GWIMBIT,ONBIT
SET 'OHERE,HERE
SET 'HERE,RM
FSET? RM,ONBIT /?THN4
ZERO? ALWAYS-LIT /?ELS3
?THN4: SET 'LIT,1
JUMP ?CND1
?ELS3: PUT P-MERGE,P-MATCHLEN,0
SET 'P-TABLE,P-MERGE
SET 'P-SLOCBITS,-1
EQUAL? OHERE,RM \?CND8
CALL DO-SL,WINNER,1,1
?CND8: CALL DO-SL,RM,1,1
GET P-TABLE,P-MATCHLEN
GRTR? STACK,0 \?CND1
SET 'LIT,1
?CND1: SET 'HERE,OHERE
SET 'P-GWIMBIT,0
RETURN LIT
.FUNCT PRSO-PRINT,PTR
PRINTI " "
PRINTD PRSO