moonmist/colors.zap

755 lines
17 KiB
Plaintext

.FUNCT INTRO
PRINTI "
You drove west from London all day in your new little British "
PRINTD CAR
PRINTI ". Now at last you've arrived in the storied land of Cornwall.
Dusk has fallen as you pull up in front of "
PRINTD CASTLE
PRINTI ". A ghostly "
PRINTD MOON
PRINTI " is rising, and a tall iron gate between two pillars bars the way into the "
PRINTD COURTYARD
PRINTI ".
"
RTRUE
.FUNCT YOUR-COLOR-F
CALL REMOTE-VERB?
ZERO? STACK \FALSE
EQUAL? HERE,YOUR-ROOM /?PRG11
CALL VISIBLE?,CAR
ZERO? STACK \?PRG11
CALL VISIBLE?,EXERCISE-OUTFIT
ZERO? STACK \?PRG11
CALL VISIBLE?,DINNER-OUTFIT
ZERO? STACK \?PRG11
CALL VISIBLE?,SLEEP-OUTFIT
ZERO? STACK \?PRG11
CALL NOT-HERE,YOUR-COLOR
RSTACK
?PRG11: PRINTI "It's "
PRINTD YOUR-COLOR
PRINTR "!"
.FUNCT GET-COLOR,NUM,N,WD,SUM=0,X,?TMP1
PUTB P-INBUF,0,30
?PRG1: PRINTC 62
READ P-INBUF,P-LEXV
GETB P-LEXV,P-LEXWORDS >NUM
ZERO? NUM \?CND5
PRINTC 34
PRINT BEG-PARDON
PRINTI """ "
JUMP ?PRG1
?CND5: SET 'N,P-LEXSTART
?PRG9: GET P-LEXV,N >WD
CALL ZMEMQ,WD,COLOR-WORDS >X
ZERO? X /?CCL13
SET 'VARIATION,X
?REP10: GETB P-LEXV,P-LEXWORDS
SUB STACK,1
MUL P-LEXELEN,STACK
ADD P-LEXSTART,STACK >WD
GET P-LEXV,WD
EQUAL? STACK,W?PERIOD,W?!,W?? \?CND16
SUB WD,P-LEXELEN >WD
?CND16: ADD WD,1
MUL 2,STACK >N
GETB P-LEXV,N >?TMP1
ADD 1,N
GETB P-LEXV,STACK
ADD ?TMP1,STACK
ADD -1,STACK >WD
ADD P-INBUF,1
CALL NON-BLANK-STUFF,FAVE-COLOR,STACK,WD
PRINTI """Did you say "
PRINTD YOUR-COLOR
PRINTI " is "
CALL PRINT-COLOR,TRUE-VALUE
PRINTI "?"""
CALL YES?
ZERO? STACK /?PRG32
ZERO? VARIATION \?CND25
GETB P-LEXV,5
GETB P-INBUF,STACK >SUM
CALL ZMEMQ,SUM,COLOR-LETTERS >X
ZERO? X /?CCL29
SET 'VARIATION,X
JUMP ?CND27
?CCL13: DLESS? 'NUM,1 /?REP10
ADD N,P-LEXELEN >N
JUMP ?PRG9
?CCL29: EQUAL? SUM,112 \?CCL31
SET 'VARIATION,PAINTER-C
JUMP ?CND27
?CCL31: MOD SUM,MAX-VARS
ADD 1,STACK >VARIATION
?CND27: GET COLOR-WORDS,VARIATION >COLOR-FORCED
?CND25: CALL DO-VARIATION
PUTB P-INBUF,0,80
RTRUE
?PRG32: PRINTI """What, then?"""
CRLF
SET 'VARIATION,0
JUMP ?PRG1
.FUNCT FIX-COLOR-ADJ,OBJ,PT,N
GETPT OBJ,P?ADJECTIVE >PT
ZERO? PT /FALSE
PTSIZE PT
SUB STACK,1
CALL ZMEMQB,A?F.C,PT,STACK >N
ZERO? N /FALSE
GET COLOR-ADJS,VARIATION
PUTB PT,N,STACK
RTRUE
.FUNCT DO-VARIATION,C
CALL FIX-COLOR-ADJ,YOUR-COLOR
CALL FIX-COLOR-ADJ,YOUR-ROOM
CALL FIX-COLOR-ADJ,CAR
CALL FIX-COLOR-ADJ,SLEEP-OUTFIT
CALL FIX-COLOR-ADJ,EXERCISE-OUTFIT
CALL FIX-COLOR-ADJ,DINNER-OUTFIT
EQUAL? VARIATION,LORD-C \?CCL3
LOC LOVER >C
JUMP ?CND1
?CCL3: EQUAL? VARIATION,FRIEND-C \?CCL5
SET 'C,IRIS-CLOSET
JUMP ?CND1
?CCL5: EQUAL? VARIATION,PAINTER-C \?CCL7
SET 'C,VIVIEN-BOX
JUMP ?CND1
?CCL7: SET 'C,WENDISH-KIT
?CND1: SET 'HIDING-PLACE,C
MOVE COSTUME,C
MOVE BLOWGUN,C
EQUAL? VARIATION,LORD-C \?CCL10
SET 'VILLAIN-PER,LOVER
MOVE NECKLACE-OF-D,JACK-ROOM
MOVE JEWEL,LOCAL-GLOBALS
SET 'TREASURE,WAR-CLUB
MOVE CLUE-2,PAINTER
FSET STAINED-WINDOW,CONTBIT
MOVE CLUE-3,STAINED-WINDOW
MOVE CLUE-4,GARDEN
MOVE CANE,UMBRELLA-STAND
JUMP ?CND8
?CCL10: EQUAL? VARIATION,FRIEND-C \?CCL13
SET 'VILLAIN-PER,FRIEND
MOVE TAMARA-EVIDENCE,TAMARA-BED
GETPT FRIEND,P?WEST
PUT STACK,NEXITSTR,STR?212
MOVE JOURNAL,TAMARA-BED
FSET JOURNAL,NDESCBIT
MOVE EARRING,JEWELRY-CASE
MOVE JEWEL,LOCAL-GLOBALS
SET 'TREASURE,NECKLACE
MOVE NECKLACE,SKELETON
MOVE CLUE-4,COFFIN
FCLEAR CLUE-4,NDESCBIT
FSET CLUE-4,TAKEBIT
MOVE CLUE-3,BELL
MOVE BRICKS,BASEMENT
JUMP ?CND8
?CCL13: EQUAL? VARIATION,DOCTOR-C \?CCL15
SET 'VILLAIN-PER,DOCTOR
MOVE WENDISH-BOOK,BOOKCASE
MOVE LENS-BOX,WENDISH-KIT
FCLEAR LENS-BOX,NDESCBIT
FSET LENS-BOX,TAKEBIT
MOVE JOURNAL,DESK
MOVE LETTER-DEE,STUDY
SET 'TREASURE,MOONMIST
FSET MOONMIST,SECRETBIT
MOVE CLUE-3,RHINO-HEAD
MOVE CLUE-4,GALLERY-CORNER
FCLEAR CLUE-4,NDESCBIT
FSET CLUE-4,TAKEBIT
MOVE MOONMIST,INKWELL
JUMP ?CND8
?CCL15: EQUAL? VARIATION,PAINTER-C \?CND8
SET 'VILLAIN-PER,PAINTER
MOVE VIVIEN-DIARY,VIVIEN-BOX
MOVE LENS-BOX,VIVIEN-BOX
FCLEAR LENS-BOX,NDESCBIT
FSET LENS-BOX,TAKEBIT
SET 'TREASURE,SKULL
MOVE SKULL,BELL
FSET MUSIC,SECRETBIT
MOVE CLUE-3,ARMOR
?CND8: EQUAL? VILLAIN-PER,LOVER \?CCL21
SET 'SEARCHER,LORD
JUMP ?CND19
?CCL21: SET 'SEARCHER,VILLAIN-PER
?CND19: FSET? VILLAIN-PER,FEMALE \FALSE
FSET GHOST-NEW,FEMALE
RTRUE
.FUNCT CANE-F,P
CALL ATTACK-VERB?
ZERO? STACK /?CCL3
CALL NO-VIOLENCE?,CANE
RTRUE
?CCL3: CALL DISCOVER-WAR-CLUB,CANE
RSTACK
.FUNCT PAINT-F
EQUAL? PRSA,V?EXAMINE \?CCL3
PRINTR "It seems to be hiding something."
?CCL3: EQUAL? PRSA,V?TAKE-OFF,V?RUB /?CTR6
EQUAL? PRSA,V?REMOVE,V?LOOK-UNDER,V?BRUSH /?CTR6
EQUAL? PRSA,V?TAKE \?CCL7
ZERO? PRSI /?CCL7
?CTR6: CALL DISCOVER-WAR-CLUB,CANE,TRUE-VALUE
RTRUE
?CCL7: CALL DIVESTMENT?,PAINT
ZERO? STACK /FALSE
CALL HAR-HAR
RSTACK
.FUNCT DISCOVER-WAR-CLUB,OBJ,DO-IT=0,PER
EQUAL? PRSA,V?RUB,V?BRUSH /?CTR2
ZERO? DO-IT /?CCL3
?CTR2: FSET? WAR-CLUB,SECRETBIT \FALSE
CALL DISCOVER,WAR-CLUB,PAINT
LOC OBJ
MOVE WAR-CLUB,STACK
LOC OBJ
CALL ROB,OBJ,STACK
MOVE OBJ,LOCAL-GLOBALS
MOVE PAINT,LOCAL-GLOBALS
RTRUE
?CCL3: EQUAL? PRSA,V?SEARCH,V?EXAMINE \FALSE
FSET? WAR-CLUB,SECRETBIT \FALSE
FCLEAR PAINT,SECRETBIT
PRINTI "There's something strange about this "
PRINTD OBJ
PRINTI ". It's shaped like a baseball bat, but with hard, faceted bumps all over it. It has a new "
PRINTD PAINT
PRINTR "."
.FUNCT ATTACK-VERB?,SHOOT=0
EQUAL? PRSA,V?SLAP,V?KILL,V?ATTACK \?CCL3
FSET? PRSO,PERSONBIT /TRUE
RFALSE
?CCL3: EQUAL? PRSA,V?SHOOT \?CCL8
ZERO? SHOOT /FALSE
FSET? PRSO,PERSONBIT /TRUE
RFALSE
?CCL8: EQUAL? PRSA,V?PUT,V?RING \?CCL15
ZERO? SHOOT /FALSE
ZERO? PRSI /TRUE
FSET? PRSI,PERSONBIT /TRUE
RFALSE
?CCL15: EQUAL? PRSA,V?USE \FALSE
ZERO? PRSI /TRUE
FSET? PRSI,PERSONBIT /TRUE
RFALSE
.FUNCT WAR-CLUB-F
EQUAL? PRSA,V?COMPARE \?CCL3
EQUAL? JEWEL,PRSO,PRSI \FALSE
CALL START-SENTENCE,WAR-CLUB
PRINTI " has no "
PRINTD JEWEL
PRINTR " like this one."
?CCL3: EQUAL? PRSA,V?EXAMINE \?CCL10
CALL DESCRIBE-WAR-CLUB
RSTACK
?CCL10: CALL ATTACK-VERB?
ZERO? STACK /FALSE
CALL NO-VIOLENCE?,WAR-CLUB
RTRUE
.FUNCT DESCRIBE-WAR-CLUB
PRINTI "It's a "
PRINTD WAR-CLUB
PRINTR " that once belonged to the Zulu king Dingaan -- and it's studded with large diamonds!"
.FUNCT SKULL-F
EQUAL? PRSA,V?SEARCH,V?LOOK-INSIDE,V?EXAMINE \FALSE
PRINTR "This staring skull is frightfully old -- even older than the castle."
.FUNCT MOONMIST-F
EQUAL? PRSA,V?READ,V?PLAY /?CTR2
EQUAL? PRSA,V?FIND,V?EXAMINE \?CCL3
IN? MOONMIST,GLOBAL-OBJECTS \?CCL3
?CTR2: SET 'CLOCK-WAIT,TRUE-VALUE
PRINTR "[You're playing it now!]"
?CCL3: CALL REMOTE-VERB?
ZERO? STACK \FALSE
EQUAL? PRSA,V?TAKE \?CCL13
IN? MOONMIST,GLOBAL-OBJECTS /?CCL16
CALL VISIBLE?,MOONMIST
ZERO? STACK /?CCL16
LOC MOONMIST
CALL PERFORM,PRSA,STACK,PRSI
RTRUE
?CCL16: CALL YOU-CANT
RSTACK
?CCL13: CALL NOT-HOLDING?,PRSO
ZERO? STACK \TRUE
EQUAL? PRSA,V?PUT,V?POUR \?CCL22
ZERO? PRSI /?CND23
FSET? PRSI,PERSONBIT \?CND23
CALL SHOOTING,MOONMIST
ZERO? STACK /?CND23
RETURN 2
?CND23: MOVE MOONMIST,LOCAL-GLOBALS
CALL START-SENTENCE,MOONMIST
PRINTI " dribbles "
ZERO? PRSI \?CCL34
CALL GROUND-DESC
PRINT STACK
JUMP ?PRG43
?CCL34: FSET? PRSI,SURFACEBIT /?PRG41
PRINTI "into"
CALL PRINTT,PRSI
JUMP ?PRG43
?PRG41: PRINTI "on"
CALL PRINTT,PRSI
?PRG43: PRINTR ", sizzles, and evaporates."
?CCL22: CALL DIVESTMENT?,MOONMIST
ZERO? STACK /?CCL46
CALL PERFORM,PRSA,INKWELL,PRSI
RTRUE
?CCL46: EQUAL? PRSA,V?EAT,V?DRINK \?CCL49
EQUAL? WINNER,PLAYER \FALSE
PRINTI "First it puts your tongue to sleep. Then your tummy. Then your brain."
CALL FINISH
RSTACK
?CCL49: EQUAL? PRSA,V?SMELL,V?EXAMINE \?CCL56
PRINTR "It's a greenish liquid with a strong odor."
?CCL56: CALL SHOOTING,MOONMIST
RSTACK
.FUNCT CLUE-1-F
EQUAL? PRSA,V?COMPARE \?CCL3
EQUAL? TREASURE,PRSO,PRSI \FALSE
CALL START-SENTENCE,TREASURE
EQUAL? VARIATION,LORD-C \?PRG16
FSET? PLAYER,FEMALE /?PRG16
PRINTI " looks just like the one on"
JUMP ?PRG18
?PRG16: PRINTI " seems to match"
?PRG18: PRINTI " the "
PRINTD CLUE-1
PRINTR "!"
?CCL3: EQUAL? PRSA,V?READ,V?EXAMINE \FALSE
FSET? CLUE-1,TOUCHBIT /?CND22
PRINTR "You can't see its face."
?CND22: CALL NOT-HOLDING?,PRSO
ZERO? STACK \TRUE
PRINTI "The "
PRINTD CLUE-1
PRINTI " shows "
EQUAL? VARIATION,LORD-C \?CCL32
PRINTI "the King of "
FSET? PLAYER,FEMALE \?PRG40
PRINTR "Spades, holding a sceptre."
?PRG40: PRINTI "Clubs in one corner, with a picture of an African chief holding a "
PRINTD WAR-CLUB
PRINTR "; in the other corner is the King of Diamonds, with a picture of a crowned vulture clutching a diamond."
?CCL32: EQUAL? VARIATION,FRIEND-C \?CCL43
FSET? PLAYER,FEMALE \?PRG49
PRINTR "a Polynesian diver, holding a knife and plunging through black water."
?PRG49: PRINTR "a photo of singer Pearl Bailey."
?CCL43: EQUAL? VARIATION,DOCTOR-C \?CCL52
FSET? PLAYER,FEMALE \?PRG58
PRINTD CASTLE
PRINTI ", with a cloud of mist hiding the "
PRINTD MOON
PRINTR "."
?PRG58: PRINTI "an Amazon hunter, aiming a "
PRINTD BLOWGUN
PRINTR " at the tree tops."
?CCL52: EQUAL? VARIATION,PAINTER-C \FALSE
PRINTI "a "
PRINTD SKELETON
PRINTR " in Chinese mandarin costume."
.FUNCT CLUE-2-F
EQUAL? PRSA,V?READ,V?EXAMINE \FALSE
CALL NOT-HOLDING?,PRSO
ZERO? STACK \TRUE
FSET CLUE-2,TOUCHBIT
CALL HE-SHE-IT,CLUE-2,TRUE-VALUE
PRINTI " says,"
CRLF
EQUAL? VARIATION,LORD-C \?CCL10
SET 'CLUE-LOC,CHAPEL
PRINTR """Forbidden fruit tempted the very first lass.
'Twas once in a garden but now in a glass."""
?CCL10: EQUAL? VARIATION,PAINTER-C \?CCL15
FSET? MUSIC,TOUCHBIT /?CCL18
SET 'CLUE-LOC,SITTING-ROOM
JUMP ?PRG21
?CCL18: FSET? BOTTLE,TOUCHBIT /?CCL20
SET 'CLUE-LOC,BASEMENT
JUMP ?PRG21
?CCL20: SET 'CLUE-LOC,DRAWING-ROOM
?PRG21: PRINTR """Three fellows argued about life:
1. 'Using this motto, no chap can go wrong:
Leave the wench and the grape, but go with a ____!'
2. 'On the seas of my life sails a ship that is laden
Not with bottles or tunes, but with innocent ______s!'
3. 'Women and singing are both very fine,
But for me there is nothing to equal good ____!'"""
?CCL15: EQUAL? VARIATION,DOCTOR-C \?CCL24
SET 'CLUE-LOC,GAME-ROOM
PRINTR """My first is an 'I,' but find an 'eye' that sees not."""
?CCL24: SET 'CLUE-LOC,DECK
PRINTR """... Yet the ear distinctly tells,...
How the danger sinks and swells,
By the sinking or the swelling in the anger of the ____s..."""
.FUNCT CLUE-3-F
EQUAL? PRSA,V?READ,V?EXAMINE \FALSE
CALL NOT-HOLDING?,PRSO
ZERO? STACK \TRUE
FSET CLUE-3,TOUCHBIT
FSET CLUE-3,TAKEBIT
CALL HE-SHE-IT,CLUE-3,TRUE-VALUE
PRINTI " says,
"
EQUAL? VARIATION,LORD-C \?CCL10
SET 'CLUE-LOC,GARDEN
PRINTR """Despite its appearance, the fruit was quite sour.
One bite of the apple drove Eve from her bower."""
?CCL10: EQUAL? VARIATION,FRIEND-C \?CCL14
SET 'CLUE-LOC,0
PRINTR """... And so, all the night-tide, I lie down by the side
Of my darling -- my darling -- my life and my bride,...
In her tomb by the sounding sea."""
?CCL14: EQUAL? VARIATION,DOCTOR-C \?CCL18
SET 'CLUE-LOC,GALLERY
PRINTR """My second is in never but not in ever, and lies in a hidden 'end'."""
?CCL18: SET 'CLUE-LOC,DECK
PRINTR """My al___ has no glamour;
Its '____e' tones do clam___.
Can you find me?"""
.FUNCT CLUE-4-F
EQUAL? PRSA,V?READ,V?EXAMINE \FALSE
CALL NOT-HOLDING?,PRSO
ZERO? STACK \TRUE
FSET CLUE-4,TOUCHBIT
FSET CLUE-4,TAKEBIT
CALL HE-SHE-IT,CLUE-4,TRUE-VALUE
PRINTI " says,
"
EQUAL? VARIATION,LORD-C \?CCL10
SET 'CLUE-LOC,FOYER
PRINTR """Out of the sunshine, into the rain...
The end of the story is... Abel and CAIN.""
The last word is underlined."
?CCL10: EQUAL? VARIATION,FRIEND-C \?CCL14
SET 'CLUE-LOC,BASEMENT
PRINTR """If you search for 'A Cask of Amontillado,' don't get trapped!"""
?CCL14: SET 'CLUE-LOC,OFFICE
PRINTR """My third is the silent side of knight.
All together I am what you could use for poison-pen letters."""
.FUNCT PRINT-COLOR,X=0
ZERO? VARIATION \?CCL3
ZERO? X /FALSE
?CCL3: GETB FAVE-COLOR,0
CALL WORD-PRINT,STACK,1,FAVE-COLOR
ZERO? COLOR-FORCED /TRUE
PRINTI " and "
PRINTB COLOR-FORCED
RTRUE
.FUNCT TELL-SUFFIX,I,J=1
GETB SUFFIX,0 >I
ZERO? I /FALSE
PRINTI ", "
EQUAL? JUNIOR-C,I \?CCL7
PRINTI "Junior"
RTRUE
?CCL7: EQUAL? SENIOR-C,I \?PRG13
PRINTI "Senior"
RTRUE
?PRG13: GETB SUFFIX,J
PRINTC STACK
DLESS? 'I,1 /TRUE
INC 'J
JUMP ?PRG13
.FUNCT TITLE-NAME
CALL TITLE
EQUAL? TITLE-WORD,W?MRS,W?MS,W?MISS /?PRG7
EQUAL? TITLE-WORD,W?MISTER,W?MR /?PRG7
EQUAL? TITLE-WORD,W?DOCTOR,W?DR \?PRG9
?PRG7: CALL PRINT-NAME,LAST-NAME
RSTACK
?PRG9: CALL PRINT-NAME,FIRST-NAME
RSTACK
.FUNCT TITLE
EQUAL? TITLE-WORD,W?MRS \?CCL3
PRINTI "Mrs. "
RTRUE
?CCL3: EQUAL? TITLE-WORD,W?MS \?CCL7
PRINTI "Ms. "
RTRUE
?CCL7: EQUAL? TITLE-WORD,W?MISS \?CCL11
PRINTI "Miss "
RTRUE
?CCL11: EQUAL? TITLE-WORD,W?LADY \?CCL15
PRINTI "Lady "
RTRUE
?CCL15: EQUAL? TITLE-WORD,W?DAME \?CCL19
PRINTI "Dame "
RTRUE
?CCL19: EQUAL? TITLE-WORD,W?MADAME,W?MADAM \?CCL23
PRINTI "Madame "
RTRUE
?CCL23: EQUAL? TITLE-WORD,W?DOCTOR,W?DR \?CCL27
PRINTI "Dr. "
RTRUE
?CCL27: EQUAL? TITLE-WORD,W?LORD \?CCL31
PRINTI "Lord "
RTRUE
?CCL31: EQUAL? TITLE-WORD,W?SIR \?CCL35
PRINTI "Sir "
RTRUE
?CCL35: EQUAL? TITLE-WORD,W?MISTER,W?MR \?CCL39
PRINTI "Mr. "
RTRUE
?CCL39: EQUAL? TITLE-WORD,W?MASTER \FALSE
PRINTI "Master "
RTRUE
.FUNCT NON-BLANK-STUFF,DEST,SRC,CNT,ND=1,NS=0,B,OB=32
DEC 'CNT
?PRG1: GETB SRC,NS >B
EQUAL? B,32 \?CCL4
EQUAL? NS,CNT /?CND3
EQUAL? OB,32 /?CND3
?CCL4: PUTB DEST,ND,B
INC 'ND
SET 'OB,B
?CND3: IGRTR? 'NS,CNT \?PRG1
SUB ND,1
PUTB DEST,0,STACK
RTRUE
.FUNCT FULL-NAME,NO-TELL=0
PUTB SUFFIX,0,0
PUTB LAST-NAME,0,0
SET 'MIDDLE-WORD,0
SET 'TITLE-WORD,0
ZERO? NO-TELL \TRUE
PRINTR """I said: Please state your full name."""
.FUNCT GET-NAME,NUM,N,M,I,BEG,END,?TMP1
PUTB P-INBUF,0,30
?PRG1: PRINTC 62
READ P-INBUF,P-LEXV
GETB P-LEXV,P-LEXWORDS >NUM
ZERO? NUM \?CND5
PRINTC 34
PRINT BEG-PARDON
PRINTI """ "
JUMP ?PRG1
?CND5: SET 'N,P-LEXSTART
GET P-LEXV,N >BEG
CALL TITLE-NOUN?,BEG
ZERO? STACK /?CND9
DEC 'NUM
ADD N,P-LEXELEN >N
SET 'TITLE-WORD,BEG
EQUAL? BEG,W?DOCTOR,W?DR,W?DETECT /?CND11
SET 'GENDER-KNOWN,TRUE-VALUE
?CND11: EQUAL? BEG,W?MR,W?MISTER,W?MASTER /?CCL15
EQUAL? BEG,W?LORD,W?SIR \?PRG18
?CCL15: FCLEAR PLAYER,FEMALE
?PRG18: GET P-LEXV,N
EQUAL? STACK,W?PERIOD \?CND9
DEC 'NUM
ADD N,P-LEXELEN >N
JUMP ?PRG18
?CND9: LESS? NUM,2 \?CND23
EQUAL? BEG,W?QUIT,W?Q \?CCL27
CALL V-QUIT
JUMP ?CND25
?CCL27: EQUAL? BEG,W?RESTART \?CCL29
CALL V-RESTART
JUMP ?CND25
?CCL29: EQUAL? BEG,W?RESTORE \?CND25
CALL V-RESTORE
?CND25: CALL FULL-NAME
JUMP ?PRG1
?CND23: SET 'BEG,N
SUB NUM,1
MUL P-LEXELEN,STACK
ADD N,STACK >END
?PRG31: GET P-LEXV,END
EQUAL? STACK,W?PERIOD,W?!,W?? \?REP32
SUB END,P-LEXELEN >END
JUMP ?PRG31
?REP32: LESS? BEG,END /?CND36
CALL FULL-NAME
JUMP ?PRG1
?CND36: GET P-LEXV,END
EQUAL? STACK,W?SR,W?SENIOR \?CCL40
SUB END,P-LEXELEN >END
PUTB SUFFIX,0,SENIOR-C
JUMP ?PRG51
?CCL40: GET P-LEXV,END
EQUAL? STACK,W?JR,W?JUNIOR \?CCL42
SUB END,P-LEXELEN >END
PUTB SUFFIX,0,JUNIOR-C
JUMP ?PRG51
?CCL42: ADD END,1
MUL 2,STACK >N
GETB P-LEXV,N >NUM
LESS? NUM,6 \?PRG51
ADD 1,N
GETB P-LEXV,STACK >M
SET 'I,0
?PRG44: DLESS? 'NUM,0 /?CCL48
GETB P-INBUF,M
EQUAL? STACK,105,118,120 \?PRG51
INC 'I
GETB P-INBUF,M
SUB STACK,32
PUTB SUFFIX,I,STACK
INC 'M
JUMP ?PRG44
?CCL48: PUTB SUFFIX,0,I
SUB END,P-LEXELEN >END
?PRG51: GET P-LEXV,END
EQUAL? STACK,W?PERIOD,W?COMMA,W?THE \?REP52
SUB END,P-LEXELEN >END
JUMP ?PRG51
?REP52: LESS? BEG,END /?CND56
CALL FULL-NAME
JUMP ?PRG1
?CND56: ADD END,1
MUL 2,STACK >N
GETB P-LEXV,N >NUM
SUB END,P-LEXELEN >END
GET P-LEXV,END
EQUAL? STACK,W?APOSTROPHE \?CND58
SUB END,P-LEXELEN >END
ADD END,1
MUL 2,STACK >N
GETB P-LEXV,N
ADD NUM,STACK >NUM
INC 'NUM
?CND58: GRTR? BEG,END \?CND60
CALL FULL-NAME
JUMP ?PRG1
?CND60: ADD BEG,P-LEXELEN >I
?PRG62: GRTR? I,END \?CCL66
SET 'MIDDLE-WORD,0
JUMP ?REP63
?CCL66: GET P-LEXV,I >M
EQUAL? M,W?THE,W?OF,W?COMMA /?CCL68
ADD I,P-LEXELEN >I
JUMP ?PRG62
?CCL68: SET 'MIDDLE-WORD,M
ADD I,P-LEXELEN
ADD 1,STACK
MUL 2,STACK >M
ADD 1,N
GETB P-LEXV,STACK >?TMP1
ADD 1,M
GETB P-LEXV,STACK
SUB ?TMP1,STACK
ADD NUM,STACK >NUM
SET 'N,M
?REP63: ADD 1,N
GETB P-LEXV,STACK
ADD P-INBUF,STACK
CALL NON-BLANK-STUFF,LAST-NAME,STACK,NUM
SUB N,P-WORDLEN >N
ZERO? MIDDLE-WORD /?CND69
SUB N,P-WORDLEN >N
?CND69: MUL 2,BEG
ADD 3,STACK
GETB P-LEXV,STACK >BEG
GETB P-LEXV,N >?TMP1
ADD 1,N
GETB P-LEXV,STACK
ADD ?TMP1,STACK
ADD -1,STACK >END
SUB END,BEG
ADD 1,STACK >N
ADD P-INBUF,BEG
CALL NON-BLANK-STUFF,FIRST-NAME,STACK,N
PRINTI """Did you say your name is "
CALL TELL-FULL-NAME
PRINTI "?"""
CALL YES?
ZERO? STACK /?PRG78
PUTB P-INBUF,0,80
RTRUE
?PRG78: PRINTI """Then please speak up.""
"
CALL FULL-NAME,TRUE-VALUE
JUMP ?PRG1
.FUNCT PRINT-NAME,TBL,PTR=0,LEN,CH,OCH,SP?=1
GETB TBL,0 >LEN
?PRG1: IGRTR? 'PTR,LEN /?REP2
SET 'OCH,CH
GETB TBL,PTR >CH
LESS? CH,97 /?CTR6
GRTR? CH,122 \?CCL7
?CTR6: PRINTC CH
JUMP ?CND5
?CCL7: ZERO? SP? /?CCL11
SUB CH,32
PRINTC STACK
JUMP ?CND5
?CCL11: EQUAL? OCH,39 \?CTR12
EQUAL? PTR,LEN /?CTR12
ADD 1,PTR
GETB TBL,STACK
EQUAL? 32,STACK \?CCL13
?CTR12: PRINTC CH
JUMP ?CND5
?CCL13: SUB CH,32
PRINTC STACK
?CND5: EQUAL? CH,32,46 /?CTR18
EQUAL? CH,45,38 \?CCL19
?CTR18: SET 'SP?,TRUE-VALUE
JUMP ?PRG1
?CCL19: SET 'SP?,FALSE-VALUE
JUMP ?PRG1
?REP2: EQUAL? CH,46 /FALSE
RTRUE
.ENDI