journey/commands.zabstr

305 lines
16 KiB
Plaintext

<BEGIN-SEGMENT 0>
<DEFINE JSTR (CNM) <MAPR ,STRING <FUNCTION (STR "AUX" (CHR <1 .STR>)) <COND (<
=? .STR "NUL"> <MAPLEAVE " ">) (<=? .STR "CANCEL"> <MAPLEAVE "[cancel]">) (<=?
.STR "GONE"> <MAPLEAVE "[gone]">) (<=? .STR "BUSY"> <MAPLEAVE "[busy]">) (<=? .
STR "ILL"> <MAPLEAVE "[wounded]">) (<OR .SPF <==? .STR .CNM>> <SET SPF <>> .CHR
) (<==? .CHR !\-> <SET SPF T> <ASCII 32>) (<==? .CHR !\'> .CHR) (<==? .CHR !\+>
<SET SPF T> <MAPRET>) (T <ASCII <+ <ASCII .CHR> 32>>)>> .CNM>>
<DEFINE COMMAND (NAM "ARGS" LST "AUX" OBJ ACT CSPN SPN (SPF <>) (ANM <>)) <COND
(<TYPE? .NAM LIST> <SET CSPN <SPNAME <1 .NAM>>> <SET ANM <2 .NAM>> <SET NAM <1
.NAM>>) (T <SET CSPN <SPNAME .NAM>>)> <SET SPN <SPNAME .NAM>> <COND (<EMPTY? .
LST> <SET OBJ 0> <SET ACT V-NUL>) (T <SET OBJ <EVAL <1 .LST>>> <COND (<EMPTY? <
SET LST <REST .LST>>> <SET ACT V-NUL>) (<TYPE? <1 .LST> ATOM> <SET ACT <1 .LST>
>) (T <EVAL <FORM ROUTINE <SET ACT <PARSE <STRING "V-" .CSPN>>> !.LST>>)>)> <
EVAL <FORM CONSTANT <PARSE <STRING .CSPN "-COMMAND">> <PTABLE <JSTR .SPN> <MAPR
,STRING <FUNCTION (STR "AUX" (CHR <1 .STR>)) <COND (<=? .STR "NUL"> <MAPLEAVE
" ">) (<==? .CHR !\-> <ASCII 32>) (<==? .CHR !\'> .CHR) (<==? .CHR !\+> <MAPRET
>) (T <ASCII <+ <ASCII .CHR> 32>>)>> .SPN> .ACT .OBJ <COND (<=? .SPN "CANCEL">
8) (<MEMBER .SPN ["NUL" "GONE" "BUSY" "ILL"]> 2) (T <1 .SPN>)> <COND (<=? .SPN
"ILL"> "[hurt]") (.ANM <JSTR <SPNAME .ANM>>) (T <>)>>>>>
<SETG TEMP-COMMAND ,COMMAND>
<CONSTANT COMMAND-FULL 0>
<CONSTANT COMMAND-STR 1>
<CONSTANT COMMAND-ACTION 2>
<CONSTANT COMMAND-OBJECT 3>
<CONSTANT COMMAND-CHR 4>
<CONSTANT COMMAND-ASTR 5>
<COMMAND (BERGON-ROUTE BERGON-RT)>
<COMMAND (PRAXIX-ROUTE PRAXIX-RT)>
<COMMAND TAG-ROUTE>
<COMMAND ELF-HOME>
<COMMAND FIGHT>
<COMMAND ACCEPT>
<COMMAND DECLINE>
<COMMAND (GET-ADVICE GET+ADVICE) <> () <TELL D ,LEADER
" asked the group for advice, but none was offered.">>
<DEFINE-ROUTINE V-GET-ADVICE>
<COMMAND LEFT>
<COMMAND RIGHT>
<COMMAND BACK>
<COMMAND DIVE>
<COMMAND SURFACE>
<COMMAND HIDE>
<COMMAND HELP <> () <TELL
"Journey is an interactive story in which you guide a party of
characters through a dangerous quest. To learn about the background of
your quest, select BACKGROUND after reading this material." CR CR> <TELL
"There are two types of commands that you can give; those which are
performed for the entire party (e.g. moving from place to place, retreating
after a losing battle) and those which are performed by an individual
character (e.g. examining an object, casting a spell, mingling in a
tavern.) Party Commands are the leftmost column of commands on
the screen; the next column lists the characters in your party;
and the three following columns are for the Individual Commands." CR CR> <TELL
"To select a command of either type, simply use the arrow-keys on your
keyboard to reposition the highlighted command on the screen (the \"cursor\")
until that cursor rests on the command you desire; then hit RETURN. Alternatively,
if you are using a mouse, move it such that the "> <COND (<APPLE2?> <PRINTI
"dot">) (T <PRINTI "arrow">)> <TELL
" on the screen is pointing to
that command; then click your mouse button." CR CR> <TELL
"If you are using the keyboard, use the spacebar as a shortcut
to move between the Party Commands and the Individual Commands. Also,
typing the first letter of a command or object name will select that
command or object." CR CR> <TELL "Have fun!"> <NEW-DEFAULT 2 -1>>
<DEFINE-ROUTINE V-HELP>
<COMMAND (BACKGROUND BCKGRND)>
<COMMAND BUSY>
<COMMAND ILL>
<COMMAND GONE>
<COMMAND BUY O-TAKE () <TELL "We bought the " AO " and packed it away."> <FSET
,ACTION-OBJECT ,DONT-EXAMINE> <UPDATE-MOVE ,ACTION-OBJECT ,INVENTORY> <RTRUE>>
<DEFINE-ROUTINE V-BUY>
<COMMAND CAST O-CAST () <RFALSE>>
<DEFINE-ROUTINE V-CAST>
<DEFINE-ROUTINE O-CAST>
<DEFINE-ROUTINE FIND-SPELL-OBJECTS>
<COMMAND (FEEL-AROUND FEEL-OUT)>
<COMMAND DROP O-DROP () <COND (<FSET? ,ACTION-OBJECT ,DONT-DROP> <REMOVE ,
HYE-DROP> <FOOL-DROP>) (T <UPDATE-MOVE ,ACTION-OBJECT ,HERE> <PRINTI
"Having no more need for the "> <WPRINTD ,ACTION-OBJECT> <PRINTI
", we discarded it.">)> <UPDATE-FSET ,HERE ,DONT-DROP>>
<DEFINE-ROUTINE V-DROP>
<DEFINE-ROUTINE O-DROP>
<DEFINE-ROUTINE FOOL-DROP>
<GLOBAL PRAXIX-FOOL-TBL <LTABLE 0 "turn you into a toad" "fry you"
"cast you into the sky and make you dinner for vultures">>
<COMMAND ENTER>
<COMMAND EXAMINE O-EXAMINE () <COND (<GETPT ,ACTION-OBJECT ,P?EXBITS> <
CLEAR-EXBIT ,ACTION-OBJECT ,ACTOR>) (T <FSET ,ACTION-OBJECT ,DONT-EXAMINE>)> <
TELL ACT " examined the " AO ", but found nothing of interest.">>
<DEFINE-ROUTINE V-EXAMINE>
<DEFINE-ROUTINE CLEAR-EXBIT>
<DEFINE-ROUTINE FIND-EXAMINE>
<DEFINE-ROUTINE O-EXAMINE>
<COMMAND EXIT>
<COMMAND (TELL-STORY TELL-TALE) O-TELL-LEGEND () <TELL-TALE ,ACTION-OBJECT> <
RTRUE>>
<DEFINE-ROUTINE V-TELL-STORY>
<COMMAND (TELL-LEGEND TELL-TALE) O-TELL-LEGEND () <TELL-TALE ,ACTION-OBJECT> <
RTRUE>>
<DEFINE-ROUTINE V-TELL-LEGEND>
<DEFINE-ROUTINE O-TELL-LEGEND>
<COMMAND TELL-TRUTH>
<COMMAND LIE>
<COMMAND (STREAM-PATH STREAM)>
<COMMAND APPROACH>
<COMMAND (STAY-HIDDEN STAY)>
<COMMAND FOLLOW>
<COMMAND SCENE-START>
<COMMAND SCENE-END>
<COMMAND (LOOK-AROUND LOOK-AR 'D)>
<COMMAND GET-HELP>
<COMMAND RETURN>
<COMMAND IGNORE>
<COMMAND (INVENTORY INVENT) <> ("OPTIONAL" (UPD? T) "AUX" F) <COND (<EQUAL? ,
HERE ,ASTRIX-MAZE> <UPDATE-FCLEAR ,WEBBA-MAP ,DONT-EXAMINE>)> <TELL
"I checked our provisions at that point and found,
in addition to the basic necessities of food and shelter, "> <COND (<NOT <
LIST-CONTENTS ,INVENTORY>> <PRINTI "nothing whatever">)> <COND (.UPD? <
UPDATE-FSET ,HERE ,INVENTORIED>)> <TELL ".">>
<DEFINE-ROUTINE V-INVENTORY>
<DEFINE-ROUTINE LIST-CONTENTS>
<COMMAND NUL <> () <RFALSE>>
<DEFINE-ROUTINE V-NUL>
<COMMAND PARLEY>
<COMMAND PROCEED>
<COMMAND REPLY>
<COMMAND RETREAT <> () <END-COMBAT> <TELL
"We retreated out of range of attack.">>
<DEFINE-ROUTINE V-RETREAT>
<COMMAND SCOUT <> () <UPDATE-FSET ,HERE ,DONT-SCOUT> <TELL ACT
" scouted out the area, but found nothing new of interest.">>
<DEFINE-ROUTINE V-SCOUT>
<COMMAND FLANK>
<COMMAND SELL O-SELL () <TELL "[Not implemented.]">>
<DEFINE-ROUTINE V-SELL>
<DEFINE-ROUTINE O-SELL>
<COMMAND PICK-UP O-TAKE () <FSET ,ACTION-OBJECT ,DONT-EXAMINE> <UPDATE-MOVE ,
ACTION-OBJECT ,INVENTORY> <COND (<FSET? ,TAG ,SUBGROUP> <PRINTI
"I decided to take the "> <WPRINTD ,ACTION-OBJECT> <PRINTI ", and">) (T <PRINTI
"We decided to take the "> <WPRINTD ,ACTION-OBJECT> <PRINTI ", so">)> <TELL
" I put it in my pack for safekeeping.">>
<DEFINE-ROUTINE V-PICK-UP>
<DEFINE-ROUTINE O-TAKE>
<COMMAND SPLIT-UP>
<COMMAND (COMB-AREA COMB+AREA)>
<COMMAND START>
<COMMAND STAND>
<COMMAND UPSTREAM>
<COMMAND (DOWNSTREAM DOWN)>
<COMMAND SWIM>
<COMMAND BUILD-RAFT <> () <FSET ,RAFT ,SEEN> <ICALL!-IZILCH #ZLOCAL!-IZILCH
STACK> <TELL "There was "> <COND (<FSET? ,RAFT ,TRAPPED> <PRINTI "still ">)> <
TELL "no suitable way of crossing the river on foot, so we determined to
build a raft. After gathering some large branches, it was then a simple
matter to lash them together with some of the rope we had been carrying. We
then carved ourselves oars, and were soon ready to give the river crossing a">
<COND (<QSET? ,RAFT ,TRAPPED> <PRINTI "nother">)> <TELL " try.">>
<DEFINE-ROUTINE V-BUILD-RAFT>
<COMMAND (LAUNCH-RAFT LAUNCH) <> () <TELL
"\"This would seem as good a spot as any,\" "> <COND (<FSET? ,BERGON ,IN-PARTY>
<PRINTI "Bergon">) (T <PRINTI "Praxix">)> <TELL
" said, indicating the spot where we would launch the raft." CR CR> <TELL
"This "> <COND (<EQUAL? ,PARTY-MAX 2> <PRINTI "sounded good to me">) (T <PRINTI
"met with general approval">)> <TELL
", and, having boarded the raft, we used our
crude oars to push ourselves out into the current."> <PUTP ,IN-RIVER ,P?TEMP #
ZLOCAL!-IZILCH STACK> <MOVE-TO ,IN-RIVER>>
<DEFINE-ROUTINE V-LAUNCH-RAFT>
<COMMAND CROSS>
<COMMAND CENTER>
<COMMAND SAVE <> ("OPTIONAL" (CAN? T) "AUX" SV) <TURN-ON-CURSOR> <COND (<EQUAL?
,INTERPRETER ,INT-PC> <CRLF>)> <SET SV <SAVE>> <TURN-OFF-CURSOR> <COND (<EQUAL?
.SV 1> <TURN-OFF-CURSOR> <PRINTI "[Saved.]"> <REFRESH-CHECK>) (<EQUAL? .SV 2 3>
<TURN-OFF-CURSOR> <COND (<SCREEN-NEEDS-INIT> <CRLF> <PRINTI "[Restored.]">) (T
<CLEAR ,TEXT-WINDOW> <PRINTI "[Restored.]">)> <REMOVE ,
I-CLEAR-SINGLE-MOVE-GRAPHIC> <COND (<EQUAL? ,HERE ,END-SESSION-ROOM> <V-CANCEL>
)> <COND (<BTST #ZLOCAL!-IZILCH STACK 1> <SET SCRIPTING-FLAG #ZLOCAL!-IZILCH
TRUE-VALUE> <COND (<BTST #ZLOCAL!-IZILCH STACK 512> <SET DONT-SCRIPT-INPUT #
ZLOCAL!-IZILCH TRUE-VALUE>) (T <SET DONT-SCRIPT-INPUT #ZLOCAL!-IZILCH
FALSE-VALUE>)>) (T <SET SCRIPTING-FLAG #ZLOCAL!-IZILCH FALSE-VALUE>)> <
REFRESH-CHECK #ZLOCAL!-IZILCH TRUE-VALUE>) (T <TURN-OFF-CURSOR> <PRINTI
"[Failed.]">)> <CRLF> <COND (.CAN? <V-CANCEL #ZLOCAL!-IZILCH TRUE-VALUE>)> <
RTRUE>>
<DEFINE-ROUTINE V-SAVE>
<COMMAND RESTORE <> ("OPTIONAL" (CAN? T) "AUX" (FLG <GET!-IZILCH 0 8>)) <COND (
,DONT-SCRIPT-INPUT <PUT 0 8 #ZLOCAL!-IZILCH STACK>) (T <PUT 0 8 #ZLOCAL!-IZILCH
STACK>)> <TURN-ON-CURSOR> <COND (<RESTORE> <PRINTI "[Ok.]">) (T <
TURN-OFF-CURSOR> <PRINTI "[Failed.]">)> <REFRESH-CHECK> <COND (.CAN? <V-CANCEL
#ZLOCAL!-IZILCH TRUE-VALUE>)> <RTRUE>>
<DEFINE-ROUTINE V-RESTORE>
<GLOBAL SAVED-GAME-ROOM <>>
<GLOBAL GAME-MODE <>>
<GLOBAL SAVED-GAME-MODE <>>
<GLOBAL SAVED-PARTY-COMMANDS <LTABLE 0 0 0 0 0 0>>
<DEFINE-ROUTINE SAVE-PARTY-COMMANDS>
<DEFINE-ROUTINE RESTORE-PARTY-COMMANDS>
<GLOBAL PUPDATE-FLAG <>>
<GLOBAL SMART-DEFAULT-FLAG <>>
<COMMAND GAME <> ("OPTIONAL" (RM ,GAME-ROOM) "AUX" T) <GO-TO-GAME-MODE> <
MOVE-TO .RM #ZLOCAL!-IZILCH FALSE-VALUE #ZLOCAL!-IZILCH TRUE-VALUE #
ZLOCAL!-IZILCH FALSE-VALUE> <CLEAR-FIELDS> <SET UPDATE-FLAG #ZLOCAL!-IZILCH
FALSE-VALUE> <RNUL>>
<DEFINE-ROUTINE V-GAME>
<ROOM GAME-ROOM (TRAVEL-COMMANDS SAVE-COMMAND RESTORE-COMMAND
END-SESSION-COMMAND CONTROLS-COMMAND)>
<COMMAND RESTART <> () <RESTART>>
<DEFINE-ROUTINE V-RESTART>
<COMMAND QUIT <> () <CLEAR -1> <QUIT>>
<DEFINE-ROUTINE V-QUIT>
<COMMAND (END-SESSION END-PLAY) <> () <MOVE-TO ,END-SESSION-ROOM #
ZLOCAL!-IZILCH FALSE-VALUE #ZLOCAL!-IZILCH TRUE-VALUE #ZLOCAL!-IZILCH
FALSE-VALUE> <RNUL>>
<DEFINE-ROUTINE V-END-SESSION>
<ROOM END-SESSION-ROOM (TRAVEL-COMMANDS SAVE-COMMAND QUIT-COMMAND
RESTART-COMMAND NUL-COMMAND) (ACTION <ACOND () (<EQUAL? ,ACTION ,SAVE-COMMAND>
<REMOVE-PARTY-COMMAND ,SAVE-COMMAND> <V-SAVE #ZLOCAL!-IZILCH FALSE-VALUE>)>)>
<DEFINE-ROUTINE ANONF-3>
<COMMAND CONTROLS <> () <COND (<AND ,SCRIPTING-FLAG <BTST #ZLOCAL!-IZILCH STACK
1>> <CHANGE-TRAVEL-COMMAND ,CONTROLS-ROOM ,SCRIPT-ON-COMMAND ,
SCRIPT-OFF-COMMAND>) (T <SET SCRIPTING-FLAG #ZLOCAL!-IZILCH FALSE-VALUE> <
CHANGE-TRAVEL-COMMAND ,CONTROLS-ROOM ,SCRIPT-OFF-COMMAND ,SCRIPT-ON-COMMAND>)>
<MOVE-TO ,CONTROLS-ROOM #ZLOCAL!-IZILCH FALSE-VALUE #ZLOCAL!-IZILCH TRUE-VALUE
#ZLOCAL!-IZILCH FALSE-VALUE> <RNUL>>
<DEFINE-ROUTINE V-CONTROLS>
<COMMAND VERSION <> () <TELL CR "JOURNEY: Part I of the Golden Age Trilogy." CR
> <TELL "Created by Marc Blank" CR> <TELL "Illustrations by Donald Langosy" CR>
<TELL "(c) Copyright 1988, 1989 by Infocom, Inc." CR> <TELL
"All rights reserved." CR> <TELL "JOURNEY is a trademark of Infocom, Inc." CR>
<TELL-GAME-ID> <V-CANCEL #ZLOCAL!-IZILCH TRUE-VALUE>>
<DEFINE-ROUTINE V-VERSION>
<COMMAND (CHECK-DISK CH\'K-DISK) <> () <TELL-GAME-ID> <TELL CR "[Verifying.]"
CR> <COND (<VERIFY> <PRINTI "Ok.">) (T <PRINTI "** Bad **">)> <V-CANCEL #
ZLOCAL!-IZILCH TRUE-VALUE>>
<DEFINE-ROUTINE V-CHECK-DISK>
<COMMAND (SCRIPT-OFF SCR\'T-OFF) <> () <SET SCRIPTING-FLAG #ZLOCAL!-IZILCH
FALSE-VALUE> <DIROUT -2> <V-CANCEL>>
<DEFINE-ROUTINE V-SCRIPT-OFF>
<COMMAND (SCRIPT-ON SCR\'T-ON) <> () <MOVE-TO ,SCRIPT-ON-ROOM #ZLOCAL!-IZILCH
FALSE-VALUE #ZLOCAL!-IZILCH TRUE-VALUE #ZLOCAL!-IZILCH FALSE-VALUE> <RNUL>>
<DEFINE-ROUTINE V-SCRIPT-ON>
<COMMAND COMMANDS <> () <SET SCRIPTING-FLAG #ZLOCAL!-IZILCH TRUE-VALUE> <SET
DONT-SCRIPT-INPUT #ZLOCAL!-IZILCH FALSE-VALUE> <DIROUT 2> <REFRESH-CHECK> <
V-CANCEL>>
<DEFINE-ROUTINE V-COMMANDS>
<COMMAND (NO-COMMANDS NO-CMDS) <> () <SET SCRIPTING-FLAG #ZLOCAL!-IZILCH
TRUE-VALUE> <SET DONT-SCRIPT-INPUT #ZLOCAL!-IZILCH TRUE-VALUE> <DIROUT 2> <
REFRESH-CHECK> <V-CANCEL>>
<DEFINE-ROUTINE V-NO-COMMANDS>
<ROOM SCRIPT-ON-ROOM (TRAVEL-COMMANDS COMMANDS-COMMAND NO-COMMANDS-COMMAND
NUL-COMMAND)>
<COMMAND REFRESH <> () <REFRESH-SCREEN #ZLOCAL!-IZILCH TRUE-VALUE> <V-CANCEL>>
<DEFINE-ROUTINE V-REFRESH>
<ROOM CONTROLS-ROOM (TRAVEL-COMMANDS SCRIPT-ON-COMMAND REFRESH-COMMAND
VERSION-COMMAND CHECK-DISK-COMMAND)>
<COMMAND CANCEL <> ("OPTIONAL" (RT? <>)) <MOVE-TO ,SAVED-GAME-ROOM #
ZLOCAL!-IZILCH FALSE-VALUE #ZLOCAL!-IZILCH FALSE-VALUE #ZLOCAL!-IZILCH
FALSE-VALUE> <MODE ,SAVED-GAME-MODE #ZLOCAL!-IZILCH FALSE-VALUE #ZLOCAL!-IZILCH
TRUE-VALUE> <RESTORE-PARTY-COMMANDS> <SET SMART-DEFAULT-FLAG #ZLOCAL!-IZILCH
TRUE-VALUE> <SET GAME-MODE #ZLOCAL!-IZILCH FALSE-VALUE> <SET UPDATE-FLAG #
ZLOCAL!-IZILCH FALSE-VALUE> <PRINT-CHARACTER-COMMANDS> <PRINT-COLUMNS #
ZLOCAL!-IZILCH TRUE-VALUE> <COND (.RT? <RTRUE>) (T <RNUL>)>>
<DEFINE-ROUTINE V-CANCEL>
<DEFINE-ROUTINE RNUL>
<GLOBAL PARTY-COMMANDS <LTABLE START-COMMAND BACKGROUND-COMMAND HELP-COMMAND
NUL-COMMAND GAME-COMMAND>>
<GLOBAL NAME-TBL <TABLE 0 0 0 0 0 0>>
<GLOBAL TAG-NAME <TABLE 0 0 0 0>>
<GLOBAL TAG-NAME-LENGTH 0>
<CONSTANT ILLEGAL-NAMES <LTABLE <TABLE (STRING LENGTH) "Bergon"> <TABLE (STRING
LENGTH) "Praxix"> <TABLE (STRING LENGTH) "Esher"> <TABLE (STRING LENGTH)
"Minar"> <TABLE (STRING LENGTH) "Hurth"> <TABLE (STRING LENGTH) "Umber"> <TABLE
(STRING LENGTH) "Agrith"> <TABLE (STRING LENGTH) "Astrix">>>
<DEFINE-ROUTINE ILLEGAL-NAME?>
<COMMAND (CHANGE-NAME CHG-NAME) <> ("AUX" (OFF 0) CHR LN (COL ,NAME-COLUMN) TBL
(CNT 0) MAX KBD FG BG) <TURN-ON-CURSOR> <COND (<LESS? ,SCREEN-WIDTH ,8-WIDTH> <
SET MAX 5>) (T <SET MAX 8>)> <SELECT-SCREEN ,COMMAND-WINDOW> <COND (<NOT ,
FWC-FLAG> <SET FG <WINGET -3 11>> <SET BG <SHIFT!-IZILCH .FG -8>> <SET FG <BAND
.FG 255>>)> <GCURSET #ZLOCAL!-IZILCH LN .COL> <COND (<NOT ,FWC-FLAG> <COLOR .BG
.FG> <ERASE ,NAME-WIDTH-PIX>) (T <COND (<NOT ,FONT3-FLAG> <HLIGHT ,H-INVERSE>)>
<REPEAT () <COND (<GRTR? <SET CNT <ADD .CNT 1>> .MAX> <RETURN>) (T <PRINTC !\_>
)>>)> <GCURSET .LN .COL> <SET TBL <ADD ,NAME-TBL 2>> <REPEAT () <COND (<EQUAL?
#ZLOCAL!-IZILCH CHR 13> <TURN-OFF-CURSOR> <COND (<ZERO? .OFF> <COND (<NOT ,
FWC-FLAG> <COLOR .FG .BG>)> <SET UPDATE-FLAG #ZLOCAL!-IZILCH TRUE-VALUE> <
RETURN>) (T <COND (<ILLEGAL-NAME? .OFF> <END-CHANGE-NAME> <PRINTI
"[The name you have chosen is reserved. Please try again.]"> <CRLF> <RTRUE>)> <
REMOVE-TRAVEL-COMMAND> <ZWSTR ,NAME-TBL .OFF 2 ,TAG-NAME> <PUTP ,TAG-OBJECT ,
P?KBD .KBD> <SET TAG-NAME-LENGTH .OFF> <SET UPDATE-FLAG #ZLOCAL!-IZILCH
TRUE-VALUE> <COND (<NOT ,FWC-FLAG> <COLOR .FG .BG>)> <END-CHANGE-NAME> <RTRUE>)
>) (<EQUAL? .CHR ,DELETE-KEY ,BACK-SPACE ,LEFT-ARROW> <COND (<ZERO? .OFF> <
SOUND 1> <AGAIN>) (<NOT ,FWC-FLAG> <SET OFF <SUB .OFF 1>> <COND (<ZERO? .OFF> <
GCURSET .LN .COL> <ERASE ,NAME-WIDTH-PIX>) (T <DIROUT 3 ,CENTER-TABLE> <PRINTT
.TBL .OFF> <DIROUT -3> <CURSET #ZLOCAL!-IZILCH ?TMP1!-IZILCH #ZLOCAL!-IZILCH
STACK> <ERASE #ZLOCAL!-IZILCH STACK>)>) (T <GCURSET .LN .COL> <PRINTC !\-> <SET
COL <SUB .COL 1>> <GCURSET .LN .COL> <PRINTC !\-> <SET OFF <SUB .OFF 1>> <
GCURSET .LN .COL>)>) (<OR <AND <NOT <LESS? .CHR !\A>> <NOT <GRTR? .CHR !\Z>>> <
AND <NOT <LESS? .CHR !\a>> <NOT <GRTR? .CHR !\z>>>> <COND (<EQUAL? .OFF .MAX> <
SOUND 1> <AGAIN>) (<ZERO? .OFF> <COND (<AND <NOT <LESS? .CHR !\a>> <NOT <GRTR?
.CHR !\z>>> <SET CHR <SUB .CHR 32>>)> <SET KBD .CHR>) (<AND <GRTR? .OFF 0> <NOT
<LESS? .CHR !\A>> <NOT <GRTR? .CHR !\Z>>> <SET CHR <ADD .CHR 32>>)> <PUTB .TBL
.OFF .CHR> <SET OFF <ADD .OFF 1>> <PRINTC .CHR> <COND (,FWC-FLAG <SET COL <ADD
.COL 1>> <GCURSET .LN .COL>)>) (T <SOUND 1>)>> <END-CHANGE-NAME> <RNUL>>
<DEFINE-ROUTINE V-CHANGE-NAME>
<DEFINE-ROUTINE END-CHANGE-NAME>