699 lines
13 KiB
Plaintext
699 lines
13 KiB
Plaintext
|
||
.SEGMENT "0"
|
||
|
||
|
||
.FUNCT PRINT-HIM/HER:ANY:1:1,X
|
||
FSET? X,PLURAL \?CCL3
|
||
PRINTI "them"
|
||
RTRUE
|
||
?CCL3: FSET? X,PERSON \?CCL5
|
||
EQUAL? X,ME,WINNER \?CCL8
|
||
PRINTI "yourself"
|
||
RTRUE
|
||
?CCL8: FSET? X,FEMALE \?CCL10
|
||
PRINTI "her"
|
||
RTRUE
|
||
?CCL10: PRINTI "him"
|
||
RTRUE
|
||
?CCL5: PRINTI "it"
|
||
RTRUE
|
||
|
||
|
||
.FUNCT CPRINT-HE/SHE:ANY:1:1,X
|
||
FSET? X,PLURAL \?CCL3
|
||
PRINTI "They"
|
||
RTRUE
|
||
?CCL3: FSET? X,PERSON \?CCL5
|
||
EQUAL? X,ME,WINNER \?CCL8
|
||
PRINTI "You"
|
||
RTRUE
|
||
?CCL8: FSET? X,FEMALE \?CCL10
|
||
PRINTI "She"
|
||
RTRUE
|
||
?CCL10: PRINTI "He"
|
||
RTRUE
|
||
?CCL5: PRINTI "It"
|
||
RTRUE
|
||
|
||
|
||
.FUNCT PRINT-HE/SHE:ANY:1:1,X
|
||
FSET? X,PLURAL \?CCL3
|
||
PRINTI "they"
|
||
RTRUE
|
||
?CCL3: FSET? X,PERSON \?CCL5
|
||
EQUAL? X,ME,WINNER \?CCL8
|
||
PRINTI "yourself"
|
||
RTRUE
|
||
?CCL8: FSET? X,FEMALE \?CCL10
|
||
PRINTI "she"
|
||
RTRUE
|
||
?CCL10: PRINTI "he"
|
||
RTRUE
|
||
?CCL5: PRINTI "it"
|
||
RTRUE
|
||
|
||
|
||
.FUNCT PRINT-HIS/HER:ANY:1:1,X
|
||
FSET? X,PLURAL \?CCL3
|
||
PRINTI "their"
|
||
RTRUE
|
||
?CCL3: FSET? X,PERSON \?CCL5
|
||
EQUAL? X,ME,WINNER \?CCL8
|
||
PRINTI "your"
|
||
RTRUE
|
||
?CCL8: FSET? X,FEMALE \?CCL10
|
||
PRINTI "her"
|
||
RTRUE
|
||
?CCL10: PRINTI "his"
|
||
RTRUE
|
||
?CCL5: PRINTI "its"
|
||
RTRUE
|
||
|
||
|
||
.FUNCT PRINT-PLURAL:ANY:1:1,OBJ
|
||
FSET? OBJ,PLURAL /FALSE
|
||
PRINTC 115
|
||
RTRUE
|
||
|
||
|
||
.FUNCT PRINTUNDER:ANY:1:1,X
|
||
HLIGHT H-UNDER
|
||
PRINT X
|
||
HLIGHT H-NORMAL
|
||
RTRUE
|
||
|
||
|
||
.FUNCT CTHE-PRINT-PRSO:ANY:0:0
|
||
CALL THE-PRINT,PRSO,TRUE-VALUE
|
||
RSTACK
|
||
|
||
|
||
.FUNCT CTHE-PRINT-PRSI:ANY:0:0
|
||
CALL THE-PRINT,PRSI,TRUE-VALUE
|
||
RSTACK
|
||
|
||
|
||
.FUNCT CTHE-PRINT:ANY:1:1,O
|
||
CALL THE-PRINT,O,TRUE-VALUE
|
||
RSTACK
|
||
|
||
|
||
.FUNCT THE-PRINT-PRSO:ANY:0:0
|
||
CALL2 THE-PRINT,PRSO
|
||
RSTACK
|
||
|
||
|
||
.FUNCT THE-PRINT-PRSI:ANY:0:0
|
||
CALL2 THE-PRINT,PRSI
|
||
RSTACK
|
||
|
||
|
||
.FUNCT THE-PRINT:ANY:1:2,O,CAP?
|
||
FSET? O,NOTHEBIT /?PRD2
|
||
PUSH 1
|
||
JUMP ?PEN1
|
||
?PRD2: PUSH 0
|
||
?PEN1: CALL DPRINT,O,CAP?,STACK
|
||
RSTACK
|
||
|
||
|
||
.FUNCT CPRINTA-PRSO:ANY:0:0
|
||
CALL PRINTA,PRSO,TRUE-VALUE
|
||
RSTACK
|
||
|
||
|
||
.FUNCT PRINTA-PRSO:ANY:0:0
|
||
CALL2 PRINTA,PRSO
|
||
RSTACK
|
||
|
||
|
||
.FUNCT PRINTA-PRSI:ANY:0:0
|
||
CALL2 PRINTA,PRSI
|
||
RSTACK
|
||
|
||
|
||
.FUNCT PRINTA:ANY:1:2,O,CAP?
|
||
FSET? O,THE \?CCL3
|
||
ZERO? CAP? /?CCL6
|
||
PRINTI "The "
|
||
JUMP ?CND1
|
||
?CCL6: PRINTI "the "
|
||
JUMP ?CND1
|
||
?CCL3: FSET? O,NOABIT /?CND1
|
||
FSET? O,AN \?CCL10
|
||
ZERO? CAP? /?CCL13
|
||
PRINTI "An "
|
||
JUMP ?CND1
|
||
?CCL13: PRINTI "an "
|
||
JUMP ?CND1
|
||
?CCL10: ZERO? CAP? /?CCL15
|
||
PRINTI "A "
|
||
JUMP ?CND1
|
||
?CCL15: PRINTI "a "
|
||
?CND1: CALL2 IPRINT,O
|
||
RSTACK
|
||
|
||
|
||
.FUNCT DPRINT-PRSO:ANY:0:0
|
||
CALL2 DPRINT,PRSO
|
||
RSTACK
|
||
|
||
|
||
.FUNCT DPRINT-PRSI:ANY:0:0
|
||
CALL2 DPRINT,PRSI
|
||
RSTACK
|
||
|
||
|
||
.FUNCT DPRINT:ANY:1:3,O,CAP?,THE?,S
|
||
EQUAL? O,PLAYER,ME \?CCL3
|
||
ZERO? CAP? /?CCL6
|
||
PRINTI "You"
|
||
RTRUE
|
||
?CCL6: PRINTI "you"
|
||
RTRUE
|
||
?CCL3: EQUAL? O,RUTTER \?CCL8
|
||
ZERO? CAP? /?CCL8
|
||
PRINTI "Your rutter"
|
||
RTRUE
|
||
?CCL8: CALL2 GET-OWNER,O >S
|
||
ZERO? S /?CCL13
|
||
GETP O,P?OWNER
|
||
EQUAL? S,STACK /?CCL13
|
||
EQUAL? S,PLAYER \?CCL18
|
||
ZERO? CAP? /?CCL21
|
||
PRINTI "Your "
|
||
JUMP ?CND11
|
||
?CCL21: PRINTI "your "
|
||
JUMP ?CND11
|
||
?CCL18: ICALL DPRINT,S,CAP?
|
||
PRINTI "'s "
|
||
JUMP ?CND11
|
||
?CCL13: ZERO? THE? \?CCL22
|
||
FSET? O,THE \?CND11
|
||
?CCL22: ZERO? CAP? /?CCL27
|
||
PRINTI "The "
|
||
JUMP ?CND11
|
||
?CCL27: PRINTI "the "
|
||
?CND11: CALL2 IPRINT,O
|
||
RSTACK
|
||
|
||
|
||
.FUNCT IPRINT:ANY:1:1,O,TMP
|
||
GETP O,P?SDESC >TMP
|
||
ZERO? TMP /?CCL3
|
||
PRINT TMP
|
||
RTRUE
|
||
?CCL3: PRINTD O
|
||
RTRUE
|
||
|
||
|
||
.FUNCT PICK-ONE:ANY:1:1,FROB,L,CNT,RND,MSG,RFROB
|
||
GET FROB,0 >L
|
||
GET FROB,1 >CNT
|
||
DEC 'L
|
||
ADD FROB,2 >FROB
|
||
MUL CNT,2
|
||
ADD FROB,STACK >RFROB
|
||
SUB L,CNT
|
||
RANDOM STACK >RND
|
||
GET RFROB,RND >MSG
|
||
GET RFROB,1
|
||
PUT RFROB,RND,STACK
|
||
PUT RFROB,1,MSG
|
||
INC 'CNT
|
||
EQUAL? CNT,L \?CND1
|
||
SET 'CNT,0
|
||
?CND1: PUT FROB,0,CNT
|
||
RETURN MSG
|
||
|
||
|
||
.FUNCT SCENE-SELECT:ANY:0:1,FULL?,TMP,M,WID,WHICH,L,Y,END,?TMP1
|
||
GET PART-MENU,0
|
||
ADD STACK,1 >L
|
||
WINGET S-FULL,WHIGH
|
||
ADD 1,STACK >END
|
||
EQUAL? MACHINE,APPLE-2E,APPLE-2C,APPLE-2GS \?CND1
|
||
ADD L,2 >L
|
||
?CND1: MUL L,FONT-Y >TMP
|
||
SUB END,TMP >Y
|
||
EQUAL? MACHINE,APPLE-2E,APPLE-2C,APPLE-2GS \?CND3
|
||
MUL 2,FONT-Y
|
||
SUB Y,STACK >Y
|
||
?CND3: WINGET S-TEXT,WLEFT >?TMP1
|
||
WINGET S-TEXT,WWIDE
|
||
ICALL WINDEF,S-TEXT,Y,?TMP1,TMP,STACK
|
||
ICALL1 RESET-MARGIN
|
||
?PRG5: CLEAR S-TEXT
|
||
SCREEN S-TEXT
|
||
CALL GET-FROM-MENU,STR?6,PART-MENU,SCENE-SELECT-F,1 >WHICH
|
||
ZERO? WHICH /?PRG5
|
||
RTRUE
|
||
|
||
|
||
.FUNCT SCENE-SELECT-F:ANY:2:2,TMP,M
|
||
EQUAL? TMP,1 \?CCL3
|
||
ICALL1 SETUP-TEXT-AND-STATUS
|
||
GET SCENES,1 >SCENE
|
||
RETURN SCENE
|
||
?CCL3: EQUAL? TMP,2 \?CCL5
|
||
CLEAR S-TEXT
|
||
ICALL1 V-RESTORE
|
||
ICALL1 RESET-MARGIN
|
||
CLEAR S-TEXT
|
||
RFALSE
|
||
?CCL5: EQUAL? TMP,3 \FALSE
|
||
CLEAR S-TEXT
|
||
ICALL V-QUIT,TRUE-VALUE,FALSE-VALUE
|
||
ICALL1 RESET-MARGIN
|
||
CLEAR S-TEXT
|
||
RFALSE
|
||
|
||
.ENDSEG
|
||
|
||
.SEGMENT "STARTUP"
|
||
|
||
|
||
.FUNCT GO:ANY:0:0
|
||
?FCN: MOUSE-LIMIT -1
|
||
GETB 0,30 >MACHINE
|
||
GETB 0,45 >FG-COLOR
|
||
GETB 0,44 >BG-COLOR
|
||
EQUAL? MACHINE,APPLE-2E,APPLE-2C,APPLE-2GS \?CCL4
|
||
SET 'TEXT-MARGIN,0
|
||
PICINF P-BORDER,YX-TBL \?CND2
|
||
GET YX-TBL,0 >BORDER-HEIGHT
|
||
JUMP ?CND2
|
||
?CCL4: SET 'TEXT-MARGIN,2
|
||
?CND2: SET 'LIT,TRUE-VALUE
|
||
ADD C-TABLE,C-TABLELEN >CLOCK-HAND
|
||
SET 'PLAYER,BLACKTHORNE
|
||
ICALL1 SETUP-FULL
|
||
ICALL1 TITLE-SCREEN
|
||
ZERO? DEMO-VERSION? /?CND7
|
||
ICALL1 SLIDE-SHOW
|
||
JUMP ?FCN
|
||
?CND7: ICALL1 SETUP-DISPLAY
|
||
ICALL1 SCENE-SELECT
|
||
ICALL GOTO-SCENE,SCENE,FALSE-VALUE
|
||
CALL1 MAIN-LOOP
|
||
RSTACK
|
||
|
||
|
||
.FUNCT SLIDE-SHOW:ANY:0:0
|
||
CLEAR -1
|
||
PRINTI "This is a demonstration version of SHOGUN.
|
||
|
||
First you will see a few samples of the graphic screens that await you in SHOGUN.We've used graphics in surprising new ways to enhance the story without detracting from Infocom's traditional richness and depth.
|
||
Then you will be able to interact with a small section of SHOGUN.Feel free to try the new friendlier parser, the optional mouse interface, and the on-screen hints.
|
||
SHOGUN is an adaptation of James Clavell's novel, which has sold over 7 million copies and inspired the popular T.V. mini-series.Dave Lebling, while collaborating with Clavell, has incorporated the creative style and rich prose that have made his earlier ZORK titles so popular.
|
||
In SHOGUN you are transcended into the world of Clavell's saga, which combines all of the mystery and action of a great adventure story with the intensity and romance of a classic love story.Whether you find yourself matching wits with tyrannical Japanese aristocrats or fighting off attacks by Ninja assassins, you are sure to be both challenged and entertained.Both the action and the intriguing, historical locale set the stage for unparalleled fun and excitement.
|
||
"
|
||
ICALL1 TYPE-ANY-KEY
|
||
CALL1 END-DEMO
|
||
RSTACK
|
||
|
||
|
||
.FUNCT END-DEMO:ANY:0:0
|
||
?FCN: CLEAR -1
|
||
PRINTI "
|
||
You have reached the end of this demonstration version of
|
||
"
|
||
ICALL1 V-VERSION
|
||
PRINTI "
|
||
|
||
"
|
||
ICALL1 TYPE-ANY-KEY
|
||
SCREEN S-TEXT
|
||
RESTART
|
||
PRINT FAILED
|
||
JUMP ?FCN
|
||
|
||
.ENDSEG
|
||
|
||
.SEGMENT "0"
|
||
|
||
|
||
.FUNCT SETUP-FULL:ANY:0:0,HIGH,WIDE,X
|
||
GET 0,18 >HIGH
|
||
GET 0,17 >WIDE
|
||
ICALL WINDEF,S-FULL,1,1,HIGH,WIDE
|
||
WINGET S-TEXT,WFSIZE >X
|
||
SHIFT X,-8 >FONT-Y
|
||
BAND X,255 >FONT-X
|
||
RETURN FONT-X
|
||
|
||
|
||
.FUNCT SETUP-DISPLAY:ANY:0:0,HIGH,WIDE
|
||
GET 0,18 >HIGH
|
||
GET 0,17 >WIDE
|
||
MOUSE-LIMIT -1
|
||
ICALL1 SETUP-FULL
|
||
ICALL1 SETUP-TEXT-AND-STATUS
|
||
WINGET S-TEXT,WWIDE >WIDE
|
||
MARGIN TEXT-MARGIN,TEXT-MARGIN,S-TEXT
|
||
MUL 2,TEXT-MARGIN
|
||
SUB WIDE,STACK >WIDE
|
||
GETB P-INBUF,0 >WIDTH
|
||
DIV WIDE,FONT-X >WIDE
|
||
LESS? WIDE,WIDTH \FALSE
|
||
SET 'WIDTH,WIDE
|
||
GRTR? WIDE,INBUF-LENGTH \?CCL6
|
||
PUSH INBUF-LENGTH
|
||
JUMP ?CND4
|
||
?CCL6: PUSH WIDE
|
||
?CND4: PUTB P-INBUF,0,STACK
|
||
RTRUE
|
||
|
||
|
||
.FUNCT REPAINT-DISPLAY:ANY:0:1,NO-BORDER?
|
||
ICALL1 RESET-MARGIN
|
||
ICALL1 NORMAL-COLOR
|
||
ICALL1 SETUP-DISPLAY
|
||
EQUAL? MACHINE,APPLE-2E,APPLE-2C,APPLE-2GS /?CCL2
|
||
ZERO? NO-BORDER? \?CND1
|
||
?CCL2: ICALL1 DISPLAY-BORDER
|
||
?CND1: ICALL2 INIT-STATUS-LINE,TRUE-VALUE
|
||
EQUAL? HERE,MAZE \FALSE
|
||
CALL1 DISPLAY-MAZE
|
||
RSTACK
|
||
|
||
|
||
.FUNCT GOTO-SCENE:ANY:1:2,SC,OSC
|
||
ASSIGNED? 'OSC /?CND1
|
||
SET 'OSC,SCENE
|
||
?CND1: CLEAR S-TEXT
|
||
EQUAL? MACHINE,APPLE-2E,APPLE-2C,APPLE-2GS \?CCL5
|
||
ZERO? OSC \?CCL5
|
||
SCREEN S-STATUS
|
||
CLEAR S-STATUS
|
||
ICALL2 DISPLAY-BORDER,P-EBORDER
|
||
JUMP ?CND3
|
||
?CCL5: EQUAL? CURRENT-BORDER,P-BORDER /?CND3
|
||
ICALL2 DISPLAY-BORDER,P-BORDER
|
||
?CND3: ICALL1 END-QUOTE
|
||
ICALL1 RESET-MARGIN
|
||
ICALL1 DEQUEUE-ALL
|
||
SET 'ORPHAN-ANSWER,FALSE-VALUE
|
||
SET 'SCENE,SC
|
||
GET SCENE-LOCS,SCENE >HERE
|
||
GETB SCENE-PICS,SCENE
|
||
ICALL2 TOUCH-SEG,STACK
|
||
FCLEAR HERE,TOUCHBIT
|
||
SET 'QCONTEXT,FALSE-VALUE
|
||
ICALL2 MOVE-ALL,BLACKTHORNE
|
||
MOVE BLACKTHORNE,HERE
|
||
FCLEAR BLACKTHORNE,RMUNGBIT
|
||
SET 'P-IT-OBJECT,FALSE-VALUE
|
||
SET 'P-HIM-OBJECT,FALSE-VALUE
|
||
SET 'P-HER-OBJECT,FALSE-VALUE
|
||
SET 'P-THEM-OBJECT,FALSE-VALUE
|
||
ICALL1 B-STAND
|
||
SET 'OPPONENT,FALSE-VALUE
|
||
GETP HERE,P?ACTION
|
||
ICALL STACK,M-SCENE-SETUP
|
||
SET 'WINNER,PLAYER
|
||
CLEAR S-TEXT
|
||
ZERO? OSC \?CCL11
|
||
CLEAR S-STATUS
|
||
ICALL1 INIT-STATUS-LINE
|
||
JUMP ?CND9
|
||
?CCL11: ICALL2 UPDATE-STATUS-LINE,TRUE-VALUE
|
||
?CND9: ICALL2 GOTO,HERE
|
||
ZERO? OSC \TRUE
|
||
ICALL1 CLOCKER
|
||
SET 'MOVES,0
|
||
RTRUE
|
||
|
||
|
||
.FUNCT TOUCH-SEG:ANY:1:1,S
|
||
EQUAL? MACHINE,APPLE-2E,APPLE-2C,APPLE-2GS /?CCL3
|
||
EQUAL? MACHINE,IBM \FALSE
|
||
?CCL3: PICINF S,YX-TBL /TRUE
|
||
RFALSE
|
||
|
||
|
||
.FUNCT GAME-VERB?:ANY:0:0
|
||
EQUAL? PRSA,V?TELL \?CCL3
|
||
ZERO? P-CONT \TRUE
|
||
?CCL3: EQUAL? PRSA,V?HELP \?CCL7
|
||
ZERO? PRSO /TRUE
|
||
?CCL7: EQUAL? PRSA,V?QUIT,V?VERSION,V?BRIEF /TRUE
|
||
EQUAL? PRSA,V?SUPER-BRIEF,V?VERBOSE,V?COLOR /TRUE
|
||
EQUAL? PRSA,V?$VERIFY,V?RESTART,V?SAVE /TRUE
|
||
EQUAL? PRSA,V?RESTORE,V?SCRIPT,V?UNSCRIPT /TRUE
|
||
EQUAL? PRSA,V?UNDO,V?SCORE,V?TIME /TRUE
|
||
EQUAL? PRSA,V?DEFINE,V?$REFRESH,V?NOTIFY /TRUE
|
||
EQUAL? PRSA,V?HINT,V?HINTS-OFF,V?CREDITS /TRUE
|
||
EQUAL? PRSA,V?$RANDOM,V?$COMMAND,V?$RECORD /TRUE
|
||
EQUAL? PRSA,V?$UNRECORD /TRUE
|
||
RFALSE
|
||
|
||
|
||
.FUNCT END-QUOTE:ANY:0:0
|
||
SET 'P-CONT,FALSE-VALUE
|
||
RETURN M-FATAL
|
||
|
||
|
||
.FUNCT DEQUEUE:ANY:1:1,RTN,TIM
|
||
CALL2 QUEUED?,RTN >RTN
|
||
ZERO? RTN /FALSE
|
||
GET RTN,C-TICK >TIM
|
||
PUT RTN,C-RTN,0
|
||
RETURN TIM
|
||
|
||
|
||
.FUNCT QUEUED?:ANY:1:1,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 QUEUE:ANY:2:3,RTN,TICK,I?,C,E,INT
|
||
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: SUB C-INTS,C-INTLEN >C-INTS
|
||
ADD C-TABLE,C-INTS >INT
|
||
?CND6: PUT INT,C-RTN,RTN
|
||
JUMP ?REP2
|
||
?CCL5: GET C,C-RTN
|
||
EQUAL? STACK,RTN \?CCL10
|
||
ZERO? I? \FALSE
|
||
SET 'INT,C
|
||
?REP2: GRTR? INT,CLOCK-HAND \?CND15
|
||
ADD TICK,3
|
||
SUB 0,STACK >TICK
|
||
?CND15: PUT INT,C-TICK,TICK
|
||
RETURN INT
|
||
?CCL10: GET C,C-RTN
|
||
ZERO? STACK \?CND3
|
||
SET 'INT,C
|
||
?CND3: ADD C,C-INTLEN >C
|
||
JUMP ?PRG1
|
||
|
||
|
||
.FUNCT CLOCKER:ANY:0:0,E,TICK,RTN,FLG,Q?,OWINNER,TMP
|
||
ZERO? CLOCK-WAIT /?CND1
|
||
SET 'CLOCK-WAIT,FALSE-VALUE
|
||
RFALSE
|
||
?CND1: EQUAL? HERE,STATIONARY? \?CCL5
|
||
INC 'STATIONARY-CNT
|
||
JUMP ?CND3
|
||
?CCL5: SET 'STATIONARY?,HERE
|
||
SET 'STATIONARY-CNT,0
|
||
?CND3: ADD C-TABLE,C-INTS >CLOCK-HAND
|
||
ADD C-TABLE,C-TABLELEN >E
|
||
SET 'OWINNER,WINNER
|
||
SET 'WINNER,PLAYER
|
||
?PRG6: ZERO? NEW-SCENE-NUMBER /?CND8
|
||
ICALL1 I-NEW-SCENE
|
||
ADD C-TABLE,C-INTS >CLOCK-HAND
|
||
SET 'FLG,TRUE-VALUE
|
||
?CND8: EQUAL? CLOCK-HAND,E \?CCL12
|
||
INC 'MOVES
|
||
SET 'WINNER,OWINNER
|
||
RETURN FLG
|
||
?CCL12: GET CLOCK-HAND,C-RTN
|
||
ZERO? STACK /?CND10
|
||
GET CLOCK-HAND,C-TICK >TICK
|
||
LESS? TICK,-1 \?CCL16
|
||
SUB 0,TICK
|
||
SUB STACK,3
|
||
PUT CLOCK-HAND,C-TICK,STACK
|
||
SET 'Q?,CLOCK-HAND
|
||
JUMP ?CND10
|
||
?CCL16: ZERO? TICK /?CND10
|
||
GRTR? TICK,0 \?CND18
|
||
DEC 'TICK
|
||
PUT CLOCK-HAND,C-TICK,TICK
|
||
?CND18: ZERO? TICK /?CND20
|
||
SET 'Q?,CLOCK-HAND
|
||
?CND20: GRTR? TICK,0 /?CND10
|
||
GET CLOCK-HAND,C-RTN >RTN
|
||
ZERO? TICK \?CND24
|
||
PUT CLOCK-HAND,C-RTN,0
|
||
?CND24: CALL RTN >TMP
|
||
ZERO? TMP /?CND26
|
||
SET 'FLG,TMP
|
||
?CND26: ZERO? Q? \?CND10
|
||
GET CLOCK-HAND,C-RTN
|
||
ZERO? STACK /?CND10
|
||
SET 'Q?,TRUE-VALUE
|
||
?CND10: ZERO? NEW-SCENE-NUMBER /?CCL34
|
||
ADD C-TABLE,C-INTS >CLOCK-HAND
|
||
JUMP ?PRG6
|
||
?CCL34: EQUAL? FLG,M-FATAL \?CCL36
|
||
SET 'CLOCK-HAND,E
|
||
JUMP ?PRG6
|
||
?CCL36: EQUAL? CLOCK-HAND,E /?PRG6
|
||
ADD CLOCK-HAND,C-INTLEN >CLOCK-HAND
|
||
ZERO? Q? \?PRG6
|
||
ADD C-INTS,C-INTLEN >C-INTS
|
||
JUMP ?PRG6
|
||
|
||
|
||
.FUNCT DEQUEUE-ALL:ANY:0:0,E,TICK,RTN,FLG,Q?
|
||
ZERO? CLOCK-WAIT /?CND1
|
||
SET 'CLOCK-WAIT,FALSE-VALUE
|
||
RFALSE
|
||
?CND1: ADD C-TABLE,C-INTS >CLOCK-HAND
|
||
ADD C-TABLE,C-TABLELEN >E
|
||
?PRG3: EQUAL? CLOCK-HAND,E \?CCL7
|
||
SET 'CLOCK-HAND,E
|
||
RTRUE
|
||
?CCL7: PUT CLOCK-HAND,C-TICK,0
|
||
PUT CLOCK-HAND,C-RTN,0
|
||
ADD CLOCK-HAND,C-INTLEN >CLOCK-HAND
|
||
ADD C-INTS,C-INTLEN >C-INTS
|
||
JUMP ?PRG3
|
||
|
||
|
||
.FUNCT PERFORM-PRSA:ANY:0:2,O,I
|
||
CALL PERFORM,PRSA,O,I
|
||
RSTACK
|
||
|
||
|
||
.FUNCT NEW-VERB:ANY:1:1,V
|
||
CALL PERFORM,V,PRSO,PRSI
|
||
RSTACK
|
||
|
||
|
||
.FUNCT SWAP-VERB:ANY:1:1,V
|
||
CALL PERFORM,V,PRSI,PRSO
|
||
RSTACK
|
||
|
||
|
||
.FUNCT NEW-PRSO:ANY:1:1,O
|
||
CALL PERFORM-PRSA,O,PRSI
|
||
RSTACK
|
||
|
||
|
||
.FUNCT NEW-WINNER-PRSO:ANY:1:3,A,O,I,OW
|
||
SET 'OW,WINNER
|
||
SET 'WINNER,PRSO
|
||
ICALL PERFORM,A,O,I
|
||
SET 'WINNER,OW
|
||
RTRUE
|
||
|
||
|
||
.FUNCT REDIRECT:ANY:2:2,FROM,TO,O,I
|
||
EQUAL? PRSO,FROM \?CCL3
|
||
SET 'O,TO
|
||
JUMP ?CND1
|
||
?CCL3: SET 'O,PRSO
|
||
?CND1: EQUAL? PRSI,FROM \?CCL6
|
||
SET 'I,TO
|
||
JUMP ?CND4
|
||
?CCL6: SET 'I,PRSI
|
||
?CND4: ICALL PERFORM-PRSA,O,I
|
||
RTRUE
|
||
|
||
|
||
.FUNCT CREWMAN?:ANY:1:1,OBJ
|
||
EQUAL? OBJ,CREWMEN,LG-CREWMEN /FALSE
|
||
FSET? OBJ,DUTCHBIT /TRUE
|
||
RFALSE
|
||
|
||
|
||
.FUNCT WINDEF:ANY:5:5,W,TOP,LEFT,HIGH,WIDE
|
||
WINPOS W,TOP,LEFT
|
||
WINSIZE W,HIGH,WIDE
|
||
RTRUE
|
||
|
||
|
||
.FUNCT C-PIXELS:ANY:1:1,X
|
||
SUB X,1
|
||
MUL STACK,FONT-X
|
||
ADD STACK,1
|
||
RSTACK
|
||
|
||
|
||
.FUNCT L-PIXELS:ANY:1:1,Y
|
||
SUB Y,1
|
||
MUL STACK,FONT-Y
|
||
ADD STACK,1
|
||
RSTACK
|
||
|
||
|
||
.FUNCT CCURSET:ANY:2:2,Y,X,?TMP1
|
||
CALL2 L-PIXELS,Y >?TMP1
|
||
CALL2 C-PIXELS,X
|
||
CURSET ?TMP1,STACK
|
||
RTRUE
|
||
|
||
|
||
.FUNCT IN-SCENE?:ANY:1:1,OBJ,SC,PT
|
||
GETPT OBJ,P?SCENE >SC
|
||
ZERO? SC /TRUE
|
||
PTSIZE SC >PT
|
||
INTBL? SCENE,SC,PT,1 /TRUE
|
||
RFALSE
|
||
|
||
|
||
.FUNCT REPLACE-SYNONYM:ANY:3:4,OBJ,OLD,NEW,DUP?,TMP,S,L
|
||
GETPT OBJ,P?SYNONYM >S
|
||
ZERO? S /FALSE
|
||
PTSIZE S
|
||
DIV STACK,2 >L
|
||
ZERO? DUP? \?CCL6
|
||
INTBL? NEW,S,L /TRUE
|
||
?CCL6: INTBL? OLD,S,L >TMP \FALSE
|
||
PUT TMP,0,NEW
|
||
RTRUE
|
||
|
||
|
||
.FUNCT REPLACE-ADJECTIVE:ANY:3:4,OBJ,OLD,NEW,DUP?,TMP,S,L
|
||
GETPT OBJ,P?ADJECTIVE >S
|
||
ZERO? S /FALSE
|
||
PTSIZE S
|
||
DIV STACK,2 >L
|
||
ZERO? DUP? \?CCL6
|
||
INTBL? NEW,S,L /TRUE
|
||
?CCL6: INTBL? OLD,S,L >TMP \FALSE
|
||
PUT TMP,0,NEW
|
||
RTRUE
|
||
|
||
|
||
.FUNCT CURSOR-OFF:ANY:0:0
|
||
CURSET -1
|
||
RTRUE
|
||
|
||
|
||
.FUNCT CURSOR-ON:ANY:0:0
|
||
CURSET -2
|
||
RTRUE
|
||
|
||
.ENDSEG
|
||
|
||
.ENDI
|