shogun/misc.zap

699 lines
13 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters!

This file contains invisible Unicode characters that may be processed differently from what appears below. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to reveal hidden characters.

.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