home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
rtsi.com
/
2014.01.www.rtsi.com.tar
/
www.rtsi.com
/
OS9
/
OSK
/
GAMES
/
informosk.lha
/
shell.z3
(
.txt
)
< prev
next >
Wrap
Z-code for Z-machine
|
1993-12-07
|
19KB
|
3,198 lines
Resident data ends at 1416, program starts at 1416, file ends at 4bb2
Starting analysis pass at address 1416
End of analysis pass, low address = 1416, high address = 4b16
[Start of code]
Main routine R0001, 0 locals ()
STORE G08,#0d
CALL R0027 -> -(SP)
POP
RTRUE
Routine R0002, 7 locals (0000, 0000, 0000, 0000, 0000, 0000, 0000)
CALL R0025 -> -(SP)
POP
L0001: STORE L03,#00
DEC L03
L0002: JL L03,#09 [FALSE] L0003
INC L03
LOADB L01,L03 -> -(SP)
STOREB G33,L03,(SP)+
JUMP L0002
L0003: NEW_LINE
PRINT_CHAR '>'
READ L00,L01
LOADB L01,#01 -> L02
JE L02,#00 [FALSE] L0004
PRINT "I beg your pardon?
"
JUMP L0001
L0004: LOADW L01,#01 -> L04
JE L04,"o","oops" [FALSE] L0005
JUMP L0006
L0005: RET L02
L0006: JE G31,#00 [FALSE] L0007
PRINT "Sorry, that can't be corrected.
"
JUMP L0001
L0007: JE L02,#01 [FALSE] L0008
PRINT "Think nothing of it.
"
JUMP L0001
L0008: JG L02,#02 [FALSE] L0009
PRINT ""Oops" can only correct a single word.
"
JUMP L0001
L0009: LOADW L01,#03 -> L05
LOADW L01,#04 -> L06
STORE L03,#00
DEC L03
L0010: JL L03,#09 [FALSE] L0011
INC L03
LOADB G33,L03 -> -(SP)
STOREB L01,L03,(SP)+
JUMP L0010
L0011: MUL #02,G31 -> -(SP)
SUB (SP)+,#01 -> L04
STOREW L01,L04,L05
INC L04
STOREW L01,L04,L05
RET L02
Routine R0003, 10 locals (0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000,
0000)
JE G1c,#01 [FALSE] L0003
STORE L05,#00
DEC L05
L0001: JL L05,#07 [FALSE] L0002
INC L05
LOADB G40,L05 -> -(SP)
STOREB L00,L05,(SP)+
JUMP L0001
L0002: STORE G1c,#00
RTRUE
L0003: CALL R0002 (G10,G11) -> -(SP)
POP
L0004: STORE G49,#01
LOADB G11,#01 -> G24
STORE G26,#01
STORE G14,G08
L0005: STORE G23,G26
CALL R0020 -> G25
JE G25,"g" [FALSE] L0006
STORE G25,"again"
L0006: JE G25,"again" [FALSE] L0010
LOADB G22,#01 -> L06
JE L06,#00 [FALSE] L0007
PRINT "You can hardly repeat that.
"
JUMP L0003
L0007: STORE L05,#00
DEC L05
L0008: JL L05,#3f [FALSE] L0009
INC L05
LOADB G22,L05 -> L06
STOREB G11,L05,L06
JUMP L0008
L0009: JUMP L0004
L0010: JE G25,"again" [TRUE] L0012
STORE L05,#00
DEC L05
L0011: JL L05,#3f [FALSE] L0012
INC L05
LOADB G11,L05 -> L06
STOREB G22,L05,L06
JUMP L0011
L0012: JE G25,#00 [FALSE] L0013
STORE G49,#0b
JUMP L0050
L0013: LOADB G25,#04 -> -(SP)
AND (SP)+,#01 -> L05
JE L05,#00 [FALSE] L0025
STORE G23,G26
CALL R0011 (#01,#00,#00) -> L08
JE L08,#03e8 [FALSE] L0014
JUMP L0004
L0014: JE L08,#00 [TRUE] L0015
STOREB L00,#00,#1b
STOREB L00,#01,#01
STOREB L00,#02,L08
RTRUE
L0015: JE G14,G08 [FALSE] L0018
STORE L06,#02
DEC L06
L0016: JL L06,G24 [FALSE] L0018
INC L06
CALL R0020 -> L05
JE L05,"xcomma" [FALSE] L0017
JUMP L0019
L0017: JUMP L0016
L0018: STORE G49,#0b
JUMP L0050
L0019: SUB G23,#01 -> L06
JE L06,#01 [FALSE] L0020
PRINT "You can't begin with a comma.
"
JUMP L0003
L0020: STORE G23,#01
STORE G3d,#01
CALL R0011 (G08,G00,#06) -> L08
JE L08,#03e8 [FALSE] L0021
JUMP L0004
L0021: JE L08,#00 [FALSE] L0022
PRINT "You seem to want to talk to someone, but I can't see
whom.
"
JUMP L0003
L0022: TEST_ATTR L08,#04 [TRUE] L0023
TEST_ATTR L08,#1c [TRUE] L0023
PRINT "You can't talk to "
CALL R0040 (L08) -> -(SP)
POP
PRINT ".
"
JUMP L0003
L0023: JE G23,L06 [TRUE] L0024
PRINT "To talk to someone, try "someone, hello" or some such.
"
JUMP L0003
L0024: CALL R0022 (L08) -> -(SP)
POP
ADD L06,#01 -> G26
STORE G14,L08
JUMP L0005
L0025: LOADB G25,#04 -> -(SP)
AND (SP)+,#02 -> G1e
LOADB G25,#05 -> -(SP)
SUB #ff,(SP)+ -> L05
LOADW #00,#07 -> -(SP)
LOADW (SP)+,L05 -> L01
LOADB L01,#00 -> -(SP)
SUB (SP)+,#01 -> L03
STORE G38,"it"
STORE G39,G3a
STORE L02,#00
DEC L02
L0026: JL L02,L03 [FALSE] L0050
INC L02
MUL L02,#08 -> -(SP)
ADD #01,(SP)+ -> -(SP)
ADD L01,(SP)+ -> L04
STORE G3f,#00
STORE G2f,#00
STORE G2e,#00
STORE G29,#00
ADD G26,#01 -> G23
STORE G2b,#01
DEC G2b
L0027: JL G2b,#06 [FALSE] L0049
INC G2b
STOREW G2a,G2b,#00
LOADB L04,G2b -> L07
ADD G2b,#01 -> L09
STORE G3d,#08
JG L09,#06 [TRUE] L0028
LOADB L04,L09 -> G3d
L0028: JE G3d,#00 [FALSE] L0030
STORE L09,G2e
JG L07,#07 [TRUE] L0029
INC L09
L0029: LOADB L04,#00 -> -(SP)
JL L09,(SP)+ [TRUE] L0030
STORE G3d,#08
L0030: JG L07,#07 [FALSE] L0034
ADD #03e8,L07 -> -(SP)
STOREW G2a,G2b,(SP)+
JG G23,G24 [FALSE] L0032
JE G2f,#00 [FALSE] L0031
LOADB L04,#00 -> -(SP)
JL G2e,(SP)+ [FALSE] L0031
STORE G2f,G2b
STORE G30,L07
L0031: JE G2f,#00 [FALSE] L0032
JUMP L0049
L0032: JG G23,G24 [TRUE] L0033
CALL R0018 -> -(SP)
JE L07,(SP)+ [TRUE] L0033
JUMP L0049
L0033: JUMP L0048
L0034: LOADB L04,#00 -> -(SP)
JE G2e,(SP)+ [FALSE] L0045
JG G23,G24 [TRUE] L0037
STORE L09,#00
DEC L09
L0035: JL L09,#07 [FALSE] L0036
INC L09
LOADW G2a,L09 -> -(SP)
STOREW G2c,L09,(SP)+
JUMP L0035
L0036: STORE G2d,G2b
STORE G49,#02
JUMP L0049
L0037: JE G29,#01 [FALSE] L0039
STORE G23,G41
STORE L07,G42
CALL R0004 (L00,L07) -> L08
JE L08,#03e8 [FALSE] L0038
JUMP L0004
L0038: JE L08,#00 [FALSE] L0039
JUMP L0049
L0039: JE G2f,#00 [TRUE] L0040
PRINT "("
CALL R0005 (G2f,#01) -> -(SP)
POP
PRINT ")
"
L0040: LOADB L04,#00 -> -(SP)
STOREB L00,#01,(SP)+
LOADB L04,#07 -> -(SP)
STOREB L00,#00,(SP)+
JG G2e,#00 [FALSE] L0041
LOADB L00,#02 -> L05
JL L05,#02 [TRUE] L0041
CALL R0022 (L05) -> -(SP)
POP
L0041: STORE G31,#00
JE G3f,#00 [TRUE] L0044
STORE G1c,#01
STORE L05,#00
DEC L05
L0042: JL L05,#07 [FALSE] L0043
INC L05
LOADB L00,L05 -> -(SP)
STOREB G40,L05,(SP)+
JUMP L0042
L0043: STOREB L00,#01,#01
STOREB L00,#00,#0d
STOREB L00,#02,G3f
PRINT "(first taking "
CALL R0040 (G3f) -> -(SP)
POP
PRINT ")
"
RTRUE
L0044: RTRUE
L0045: CALL R0004 (L00,L07) -> L08
JE L08,#03e8 [FALSE] L0046
JUMP L0004
L0046: JE L08,#00 [FALSE] L0047
JUMP L0049
L0047: JE G27,#01 [FALSE] L0048
ADD G2e,#02 -> -(SP)
STOREB L00,(SP)+,#00
STOREW G2a,G2b,#00
ADD G2e,#01 -> G2e
L0048: JUMP L0027
L0049: JUMP L0026
L0050: JE G14,G08 [TRUE] L0051
CALL R0021 (G26) -> G1a
STORE G23,G26
CALL R0020 -> G19
STORE G15,#34
STORE G16,#01
STORE G17,G14
STORE G14,G08
RTRUE
L0051: JE G49,#01 [FALSE] L0052
PRINT "I didn't understand that sentence.
"
STORE G31,#01
L0052: JE G49,#02 [FALSE] L0055
PRINT "I only understood you as far as wanting to "
STORE L09,#00
DEC L09
L0053: JL L09,#07 [FALSE] L0054
INC L09
LOADW G2c,L09 -> -(SP)
STOREW G2a,L09,(SP)+
JUMP L0053
L0054: STORE G2b,G2d
CALL R0005 (#00,#01) -> -(SP)
POP
PRINT ".
"
L0055: JE G49,#03 [FALSE] L0056
PRINT "You can't see any such thing.
"
STORE G31,G32
L0056: JE G49,#04 [FALSE] L0057
PRINT "You seem to have said too little!
"
L0057: JE G49,#05 [FALSE] L0058
PRINT "You aren't holding that!
"
STORE G31,G32
L0058: JE G49,#06 [FALSE] L0059
PRINT "You can't use multiple objects with that verb.
"
L0059: JE G49,#07 [FALSE] L0060
PRINT "You can only use multiple objects once on a line.
"
L0060: JE G49,#08 [FALSE] L0061
PRINT "I'm not sure what ""
PRINT_ADDR G38
PRINT "" refers to.
"
L0061: JE G49,#09 [FALSE] L0062
PRINT "You excepted something not included anyway!
"
L0062: JE G49,#0a [FALSE] L0063
PRINT "You can only do that to something animate.
"
L0063: JE G49,#0b [FALSE] L0064
PRINT "That's not a verb I recognise.
"
L0064: JE G49,#0c [FALSE] L0065
PRINT "That's not something you need to refer to in the course
of this game.
"
L0065: JE G49,#0d [FALSE] L0066
PRINT "You can't see ""
PRINT_ADDR G38
PRINT "" ("
CALL R0040 (G39) -> -(SP)
POP
PRINT ") at the moment.
"
L0066: JUMP L0003
orphan code fragment:
RTRUE
Routine R0004, 6 locals (0000, 0000, 0000, 0000, 0000, 0000)
STORE G27,#00
STORE L05,#00
L0001: CALL R0020 -> L04
DEC G23
JE L04,"it","them" [FALSE] L0002
STORE G38,L04
STORE G39,G3a
JE G3a,#00 [FALSE] L0002
STORE G49,#08
RET #00
L0002: JE L04,"him" [FALSE] L0003
STORE G38,L04
STORE G39,G3b
JE G3b,#00 [FALSE] L0003
STORE G49,#08
RET #00
L0003: JE L04,"her" [FALSE] L0004
STORE G38,L04
STORE G39,G3c
JE G3c,#00 [FALSE] L0004
STORE G49,#08
RET #00
L0004: JE L04,"the" [FALSE] L0005
INC G23
JUMP L0001
L0005: STORE G3e,#00
JE L04,"a","an","any" [FALSE] L0006
INC G23
STORE G3e,#01
L0006: JE L04,"either" [FALSE] L0007
INC G23
STORE G3e,#01
L0007: JE L01,#07 [FALSE] L0008
CALL R0021 (G23) -> G1a
CALL R0020 -> G19
ADD G2e,#02 -> -(SP)
STOREB L00,(SP)+,#01
ADD G2e,#01 -> G2e
STOREW G2a,G2b,#01
JUMP L0041
L0008: STORE G28,#00
JE L04,G43 [FALSE] L0009
STORE L04,"all"
STORE G28,G46
L0009: JE L04,G44 [FALSE] L0010
STORE L04,"all"
STORE G28,G47
L0010: JE L04,G45 [FALSE] L0011
STORE L04,"all"
STORE G28,G48
L0011: JE L04,"everyt","both","all" [FALSE] L0029
JL L01,#02 [FALSE] L0012
STORE G49,#06
RET #00
L0012: JL L01,#06 [TRUE] L0013
STORE G49,#06
RET #00
L0013: INC G29
JG G29,#02 [FALSE] L0014
STORE G49,#07
RET #00
L0014: JE G29,#01 [FALSE] L0015
STORE G41,G23
STORE G42,L01
CALL R0007 (G00) -> -(SP)
POP
L0015: JE G29,#02 [FALSE] L0021
JE L01,#02 [FALSE] L0017
JE G00,#0c [FALSE] L0016
CALL R0007 (G00) -> -(SP)
POP
JUMP L0017
L0016: GET_PARENT G08 -> -(SP)
CALL R0007 ((SP)+) -> -(SP)
POP
L0017: JE L01,#03 [FALSE] L0018
CALL R0007 (G14) -> -(SP)
POP
L0018: JE L01,#04 [FALSE] L0019
CALL R0007 (G14) -> -(SP)
POP
LOADB L00,#03 -> -(SP)
GET_PARENT (SP)+ -> L04
JE L04,G14 [FALSE] L0019
LOADB L00,#03 -> -(SP)
CALL R0009 ((SP)+) -> -(SP)
POP
L0019: JE L01,#05 [FALSE] L0020
LOADB L00,#03 -> -(SP)
CALL R0007 ((SP)+) -> -(SP)
POP
L0020: JE G28,#00 [TRUE] L0021
CALL R0010 (G28) -> -(SP)
POP
L0021: INC G23
L0022: CALL R0020 -> L04
JE L04,"the","of" [FALSE] L0023
JUMP L0022
L0023: JE L04,G43 [FALSE] L0024
CALL R0010 (G46) -> -(SP)
POP
JUMP L0022
L0024: JE L04,G44 [FALSE] L0025
CALL R0010 (G47) -> -(SP)
POP
JUMP L0022
L0025: JE L04,G45 [FALSE] L0026
CALL R0010 (G48) -> -(SP)
POP
JUMP L0022
L0026: JE L04,"except" [FALSE] L0027
STORE L04,"but"
L0027: JE L04,"but" [FALSE] L0028
STORE L05,#02
JUMP L0001
L0028: SUB G23,#01 -> G23
JUMP L0048
L0029: STORE G31,G23
JE L01,#01 [TRUE] L0036
CALL R0011 (G00,G14,L01) -> L02
JE L02,#03e8 [FALSE] L0030
RET L02
L0030: JE L02,#00 [FALSE] L0031
CALL R0006 -> G49
RET #00
L0031: JE L02,#01 [FALSE] L0032
ADD G2e,#02 -> -(SP)
STOREB L00,(SP)+,#00
ADD G2e,#01 -> G2e
STOREW G2a,G2b,#00
RET #01
L0032: JE L01,#06 [FALSE] L0033
TEST_ATTR L02,#04 [TRUE] L0033
STORE G49,#0a
RET #00
L0033: JE L05,#00 [FALSE] L0034
ADD G2e,#02 -> -(SP)
STOREB L00,(SP)+,L02
ADD G2e,#01 -> G2e
STOREW G2a,G2b,L02
L0034: JE L05,#01 [FALSE] L0035
CALL R0008 (L02) -> -(SP)
POP
L0035: JE L05,#02 [FALSE] L0036
CALL R0009 (L02) -> L03
JE G29,#01 [TRUE] L0036
JE L03,#00 [TRUE] L0036
STORE G49,L03
RET #00
L0036: JE L01,#01 [FALSE] L0041
CALL R0011 (G14,G00,L01) -> L02
JE L02,#03e8 [FALSE] L0037
RET L02
L0037: JE L02,#00 [FALSE] L0038
CALL R0006 -> G49
RET L02
L0038: GET_PARENT L02 -> L04
JE L04,G14 [TRUE] L0040
JE G1c,#01 [FALSE] L0039
STORE G32,G31
STORE G49,#05
RET #00
L0039: STORE G3f,L02
L0040: ADD G2e,#02 -> -(SP)
STOREB L00,(SP)+,L02
ADD G2e,#01 -> G2e
STOREW G2a,G2b,L02
L0041: CALL R0020 -> L04
CALL R0016 (L02,L04) -> -(SP)
JE #00,(SP)+ [TRUE] L0042
JUMP L0041
L0042: JE L04,"and","xcomma" [FALSE] L0047
JL L01,#02 [FALSE] L0043
STORE G49,#06
RET #00
L0043: JL L01,#06 [TRUE] L0044
STORE G49,#06
RET #00
L0044: JE L05,#00 [FALSE] L0045
STORE L05,#01
L0045: JE G27,#00 [FALSE] L0046
STOREB G18,#00,#01
STOREB G18,#01,L02
SUB G2e,#01 -> G2e
STORE G27,#01
L0046: JUMP L0001
L0047: SUB G23,#01 -> G23
L0048: RET #01
Routine R0005, 6 locals (0000, 0000, 0000, 0000, 0000, 0000)
JE L00,#00 [FALSE] L0013
STORE L02,G25
STORE L00,#01
STORE L05,#01
JE L02,"invent" [FALSE] L0001
PRINT "take an inventory"
JUMP L0013
L0001: JE L02,"examin" [FALSE] L0002
PRINT "examine"
JUMP L0013
L0002: JE L02,"discar" [FALSE] L0003
PRINT "discard"
JUMP L0013
L0003: JE L02,"swallo" [FALSE] L0004
PRINT "swallow"
JUMP L0013
L0004: JE L02,"embrac" [FALSE] L0005
PRINT "embrace"
JUMP L0013
L0005: JE L02,"squeez" [FALSE] L0006
PRINT "squeeze"
JUMP L0013
L0006: JE L02,"purcha" [FALSE] L0007
PRINT "purchase"
JUMP L0013
L0007: JE L02,"unscre" [FALSE] L0008
PRINT "unscrew"
JUMP L0013
L0008: JE L02,"descri" [FALSE] L0009
PRINT "describe"
JUMP L0013
L0009: JE L02,"uncove" [FALSE] L0010
PRINT "uncover"
JUMP L0013
L0010: JE L02,"discar" [FALSE] L0011
PRINT "discard"
JUMP L0013
L0011: JE L02,"transf" [FALSE] L0012
PRINT "transfer"
JUMP L0013
L0012: PRINT_ADDR L02
L0013: SUB G2b,L01 -> L03
STORE L04,L00
DEC L04
L0014: JL L04,L03 [FALSE] L0021
INC L04
JE L05,#01 [FALSE] L0015
PRINT_CHAR ' '
L0015: LOADW G2a,L04 -> L02
JE L02,#00 [FALSE] L0016
PRINT "those things"
JUMP L0020
L0016: JE L02,#01 [FALSE] L0017
PRINT "that"
JUMP L0020
L0017: JL L02,#0100 [FALSE] L0018
CALL R0040 (L02) -> -(SP)
POP
L0018: JL L02,#03e8 [TRUE] L0020
SUB L02,#03e8 -> -(SP)
CALL R0019 ((SP)+) -> L02
JE L02,"agains" [FALSE] L0019
PRINT "against"
JUMP L0020
L0019: PRINT_ADDR L02
L0020: STORE L05,#01
JUMP L0014
L0021: RTRUE
Routine R0006, 3 locals (0000, 0000, 0000)
STORE G32,G31
SUB G23,#01 -> G23
CALL R0020 -> L01
STORE L02,#03
JE L01,G38 [FALSE] L0001
STORE L02,#0d
L0001: GET_PARENT G14 -> L00
TEST_ATTR L00,#13 [FALSE] L0002
CALL R0016 (L00,L01) -> -(SP)
JE #00,(SP)+ [TRUE] L0002
STORE L02,#0c
L0002: RET L02
Routine R0007, 1 local (0000)
STORE G27,#01
STOREB G18,#00,#00
GET_CHILD L00 -> L00 [TRUE] L0001
L0001: JE L00,#00 [TRUE] L0004
TEST_ATTR L00,#01 [TRUE] L0002
TEST_ATTR L00,#02 [TRUE] L0002
CALL R0008 (L00) -> -(SP)
POP
L0002: GET_SIBLING L00 -> L00 [TRUE] L0003
L0003: JUMP L0001
L0004: RTRUE
Routine R0008, 3 locals (0000, 0000, 0000)
LOADB G18,#00 -> L01
JE L01,#3f [FALSE] L0001
STORE G13,#01
RTRUE
L0001: STORE L02,#01
DEC L02
L0002: JL L02,L01 [FALSE] L0004
INC L02
LOADB G18,L02 -> -(SP)
JE L00,(SP)+ [FALSE] L0003
RTRUE
L0003: JUMP L0002
L0004: ADD L01,#01 -> L01
STOREB G18,L01,L00
STOREB G18,#00,L01
RTRUE
Routine R0009, 5 locals (0000, 0000, 0000, 0000, 0000)
LOADB G18,#00 -> L01
STORE L04,#00
STORE L02,#01
DEC L02
L0001: JL L02,L01 [FALSE] L0005
INC L02
LOADB G18,L02 -> -(SP)
JE L00,(SP)+ [FALSE] L0004
STORE L03,L02
DEC L03
L0002: JL L03,L01 [FALSE] L0003
INC L03
ADD L03,#01 -> -(SP)
LOADB G18,(SP)+ -> -(SP)
STOREB G18,L03,(SP)+
JUMP L0002
L0003: SUB L01,#01 -> L01
STOREB G18,#00,L01
RET L04
L0004: JUMP L0001
L0005: STORE L04,#09
RET L04
Routine R0010, 4 locals (0000, 0000, 0000, 0000)
L0001: LOADB G18,#00 -> L01
STORE L02,#01
DEC L02
L0002: JL L02,L01 [FALSE] L0004
INC L02
LOADB G18,L02 -> L03
TEST_ATTR L03,L00 [TRUE] L0003
CALL R0009 (L03) -> -(SP)
POP
JUMP L0001
L0003: JUMP L0002
L0004: RTRUE
Routine R0011, 9 locals (0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000)
STORE G36,#00
STORE G35,#00
STORE G37,G23
CALL R0014 (L00) -> -(SP)
POP
CALL R0014 (L01) -> -(SP)
POP
ADD G37,G36 -> G23
JE G35,#00 [FALSE] L0001
INC G23
RFALSE
L0001: JG G37,G24 [TRUE] L0005
JE G35,#01 [FALSE] L0002
LOADB G34,#00 -> L04
RET L04
L0002: JG G23,G24 [TRUE] L0005
JE G3d,#08 [FALSE] L0003
RFALSE
L0003: JG G3d,#08 [FALSE] L0005
CALL R0018 -> -(SP)
JE G3d,(SP)+ [TRUE] L0004
DEC G23
RFALSE
L0004: DEC G23
L0005: JE G35,#01 [FALSE] L0006
LOADB G34,#00 -> L04
L0006: JG G35,#01 [FALSE] L0007
CALL R0012 (L02) -> L04
L0007: JE L04,#00 [TRUE] L0009
JE G2f,#00 [FALSE] L0008
STORE G2f,G2b
L0008: STOREW G2a,G2b,L04
RET L04
L0009: JG G37,G24 [FALSE] L0010
JUMP L0027
L0010: JE L02,#06 [FALSE] L0011
PRINT "Who"
JUMP L0012
L0011: PRINT "Which"
L0012: PRINT " do you mean, "
SUB G35,#01 -> L05
STORE L04,#00
DEC L04
L0013: JL L04,L05 [FALSE] L0016
INC L04
LOADB G34,L04 -> L06
CALL R0040 (L06) -> -(SP)
POP
SUB L05,#01 -> -(SP)
JL L04,(SP)+ [FALSE] L0014
PRINT ", "
L0014: SUB L05,#01 -> -(SP)
JE L04,(SP)+ [FALSE] L0015
PRINT " or "
L0015: JUMP L0013
L0016: PRINT "?
"
L0017: CALL R0002 (G20,G21) -> L08
LOADW G21,#01 -> L03
JE L03,"all","both","everyt" [FALSE] L0021
JL L02,#02 [TRUE] L0020
JG L02,#05 [TRUE] L0020
STORE L04,#00
DEC L04
L0018: JL L04,L05 [FALSE] L0019
INC L04
LOADB G34,L04 -> L06
ADD L04,#01 -> -(SP)
STOREB G18,(SP)+,L06
JUMP L0018
L0019: ADD L05,#01 -> -(SP)
STOREB G18,#00,(SP)+
RET #01
L0020: PRINT "Sorry, you can only have one item here. Which one
exactly?
"
JUMP L0017
L0021: LOADB L03,#04 -> L05
AND L05,#01 -> -(SP)
JE #00,(SP)+ [TRUE] L0022
CALL R0024 (G10,G20) -> -(SP)
POP
CALL R0024 (G11,G21) -> -(SP)
POP
STORE L06,#03e8
RET L06
L0022: LOADB G11,#01 -> L07
ADD L08,L07 -> -(SP)
STOREB G11,#01,(SP)+
ADD L07,L08 -> L06
L0023: JG L06,G37 [FALSE] L0024
SUB L06,L08 -> L04
CALL R0013 (L06,G11,L04) -> -(SP)
POP
DEC L06
JUMP L0023
L0024: STORE L06,#01
DEC L06
L0025: JL L06,L08 [FALSE] L0026
INC L06
SUB L06,#01 -> -(SP)
ADD G37,(SP)+ -> L04
CALL R0013 (L04,G21,L06) -> -(SP)
POP
JUMP L0025
L0026: STORE L06,#03e8
RET L06
L0027: JE L02,#06 [FALSE] L0028
PRINT "Whom"
JUMP L0029
L0028: PRINT "What"
L0029: PRINT " do you want"
JE G14,G08 [TRUE] L0030
PRINT " "
CALL R0040 (G14) -> -(SP)
POP
L0030: PRINT " to "
CALL R0005 (#00,#01) -> -(SP)
POP
PRINT "?
"
CALL R0002 (G20,G21) -> L08
LOADW G21,#01 -> L03
LOADB L03,#04 -> L05
AND L05,#01 -> -(SP)
JE #00,(SP)+ [TRUE] L0031
CALL R0024 (G10,G20) -> -(SP)
POP
CALL R0024 (G11,G21) -> -(SP)
POP
STORE L06,#03e8
RET L06
L0031: LOADB G11,#01 -> L07
JE G2f,#00 [FALSE] L0033
STORE L06,#01
DEC L06
L0032: JL L06,L08 [FALSE] L0033
INC L06
SUB L06,#01 -> -(SP)
ADD G37,(SP)+ -> L04
CALL R0013 (L04,G21,L06) -> -(SP)
POP
JUMP L0032
L0033: JE G2f,#00 [TRUE] L0036
STORE L06,#01
DEC L06
L0034: JL L06,L08 [FALSE] L0035
INC L06
ADD G37,L06 -> L04
CALL R0013 (L04,G21,L06) -> -(SP)
POP
JUMP L0034
L0035: CALL R0019 (G30) -> -(SP)
STOREW G21,#01,(SP)+
CALL R0013 (G37,G21,#01) -> -(SP)
POP
INC L08
L0036: ADD L08,L07 -> -(SP)
STOREB G11,#01,(SP)+
STORE L06,#03e8
RET L06
Routine R0012, 7 locals (0000, 0000, 0000, 0000, 0000, 0000, 0000)
SUB G35,#01 -> L02
STORE L03,#00
LOADB G34,#00 -> L04
STORE L01,#00
DEC L01
L0001: JL L01,L02 [FALSE] L0011
INC L01
LOADB G34,L01 -> L05
TEST_ATTR L05,#01 [TRUE] L0010
STORE L06,L05
L0002: GET_PARENT L06 -> L06
JE L06,G00 [TRUE] L0003
JE L06,G14 [TRUE] L0003
JE L06,#00 [TRUE] L0003
JUMP L0002
L0003: JE L00,#00 [FALSE] L0004
JE L06,G00 [FALSE] L0004
INC L03
STORE L04,L05
L0004: JE L00,#01 [FALSE] L0005
GET_PARENT L05 -> -(SP)
JE (SP)+,G14 [FALSE] L0005
INC L03
STORE L04,L05
L0005: JE L00,#02 [FALSE] L0006
JE L06,G00 [FALSE] L0006
INC L03
STORE L04,L05
L0006: JE L00,#03 [FALSE] L0007
GET_PARENT L05 -> -(SP)
JE (SP)+,G14 [FALSE] L0007
INC L03
STORE L04,L05
L0007: JE L00,#04 [FALSE] L0008
GET_PARENT L05 -> -(SP)
JE (SP)+,G14 [FALSE] L0008
INC L03
STORE L04,L05
L0008: JE L00,#05 [FALSE] L0009
GET_PARENT L05 -> -(SP)
JE (SP)+,G14 [FALSE] L0009
INC L03
STORE L04,L05
L0009: JE L00,#06 [FALSE] L0010
TEST_ATTR L05,#04 [FALSE] L0010
INC L03
STORE L04,L05
L0010: JUMP L0001
L0011: STORE L02,#00
JE L03,#01 [FALSE] L0012
STORE L02,L04
L0012: JE G3e,#01 [FALSE] L0013
STORE L02,L04
L0013: RET L02
Routine R0013, 5 locals (0000, 0000, 0000, 0000, 0000)
MUL L00,#02 -> -(SP)
SUB (SP)+,#01 -> L03
MUL L02,#02 -> -(SP)
SUB (SP)+,#01 -> L04
LOADW L01,L04 -> -(SP)
STOREW G11,L03,(SP)+
INC L03
INC L04
LOADW L01,L04 -> -(SP)
STOREW G11,L03,(SP)+
RTRUE
Routine R0014, 3 locals (0000, 0000, 0000)
JE L00,G00 [FALSE] L0001
CALL R0014 (#01) -> -(SP)
POP
L0001: GET_CHILD L00 -> L00 [TRUE] L0002
L0002: JE L00,#00 [TRUE] L0017
JG G37,G24 [FALSE] L0003
CALL R0015 (L00,#01) -> -(SP)
POP
JUMP L0010
L0003: STORE G23,G37
CALL R0017 -> L01
JE L01,#01 [FALSE] L0004
JE G3a,L00 [FALSE] L0004
CALL R0015 (G3a,#01) -> -(SP)
POP
L0004: JE L01,#02 [FALSE] L0005
JE G3b,L00 [FALSE] L0005
CALL R0015 (G3b,#01) -> -(SP)
POP
L0005: JE L01,#03 [FALSE] L0006
JE G3c,L00 [FALSE] L0006
CALL R0015 (G3c,#01) -> -(SP)
POP
L0006: CALL R0016 (L00,L01) -> -(SP)
JE #00,(SP)+ [FALSE] L0007
JUMP L0010
L0007: STORE L02,#00
L0008: CALL R0016 (L00,L01) -> -(SP)
JE #00,(SP)+ [TRUE] L0009
CALL R0020 -> L01
INC L02
JUMP L0008
L0009: CALL R0015 (L00,L02) -> -(SP)
POP
L0010: TEST_ATTR L00,#0a [FALSE] L0011
JUMP L0013
L0011: TEST_ATTR L00,#09 [FALSE] L0015
TEST_ATTR L00,#0c [FALSE] L0012
JUMP L0013
L0012: TEST_ATTR L00,#0b [FALSE] L0013
JUMP L0015
L0013: GET_CHILD L00 -> -(SP) [TRUE] L0014
L0014: JE (SP)+,#00 [TRUE] L0015
CALL R0014 (L00) -> -(SP)
POP
L0015: GET_SIBLING L00 -> L00 [TRUE] L0016
L0016: JUMP L0002
L0017: RTRUE
Routine R0015, 2 locals (0000, 0000)
JL L01,G36 [FALSE] L0001
RTRUE
L0001: JG L01,G36 [FALSE] L0002
STORE G36,L01
STORE G35,#00
L0002: STOREB G34,G35,L00
INC G35
RTRUE
Routine R0016, 5 locals (0000, 0000, 0000, 0000, 0000)
GET_PROP_ADDR L00,#01 -> L02
GET_PROP_LEN L02 -> -(SP)
DIV (SP)+,#02 -> -(SP)
SUB (SP)+,#01 -> L03
STORE L04,#00
DEC L04
L0001: JL L04,L03 [FALSE] L0003
INC L04
LOADW L02,L04 -> -(SP)
JE L01,(SP)+ [FALSE] L0002
RTRUE
L0002: JUMP L0001
L0003: RFALSE
Routine R0017, 2 locals (0000, 0000)
CALL R0020 -> L00
JE L00,"it","them" [FALSE] L0001
STORE L01,#01
RET L01
L0001: JE L00,"him" [FALSE] L0002
STORE L01,#02
RET L01
L0002: JE L00,"her" [FALSE] L0003
STORE L01,#03
RET L01
L0003: JE L00,#00 [FALSE] L0004
RFALSE
L0004: LOADW L00,#04 -> L01
AND L01,#80 -> -(SP)
JE (SP)+,#00 [FALSE] L0005
RFALSE
L0005: RET L00
Routine R0018, 2 locals (0000, 0000)
CALL R0020 -> L01
JE L01,#00 [FALSE] L0001
RFALSE
L0001: LOADB L01,#04 -> L00
AND L00,#08 -> -(SP)
JE (SP)+,#00 [FALSE] L0002
RFALSE
L0002: LOADB L01,#06 -> -(SP)
RET (SP)+
Routine R0019, 2 locals (0000, 0000)
STORE L01,#0d9c
L0001: JE #01,#01 [FALSE] L0003
LOADW L01,#01 -> -(SP)
JE L00,(SP)+ [FALSE] L0002
LOADW L01,#00 -> L01
RET L01
L0002: ADD L01,#04 -> L01
JUMP L0001
L0003: STORE L01,#0d9c
PRINT "<Adjective not found>"
RET L01
Routine R0020, 3 locals (0000, 0000, 0000)
LOADB G11,#01 -> -(SP)
JG G23,(SP)+ [FALSE] L0001
INC G23
RFALSE
L0001: MUL G23,#02 -> -(SP)
SUB (SP)+,#01 -> L00
INC G23
LOADW G11,L00 -> L01
JE L01,#00 [FALSE] L0002
MUL G23,#04 -> -(SP)
SUB (SP)+,#03 -> L02
LOADB G11,L02 -> -(SP)
LOADB G10,(SP)+ -> L00
JE L00,#2c [FALSE] L0002
STORE L01,"xcomma"
L0002: RET L01
Routine R0021, 10 locals (0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000, 0000,
0000)
MUL L00,#04 -> -(SP)
ADD (SP)+,#01 -> L01
LOADB G11,L01 -> L02
ADD L02,G10 -> L04
SUB L01,#01 -> -(SP)
LOADB G11,(SP)+ -> L05
JL L05,#04 [TRUE] L0001
STORE L06,#03e8
L0001: JE L05,#03 [FALSE] L0002
STORE L06,#64
L0002: JE L05,#02 [FALSE] L0003
STORE L06,#0a
L0003: JE L05,#01 [FALSE] L0004
STORE L06,#01
L0004: STORE L07,#00
STORE L03,#00
SUB L05,#01 -> L05
STORE L03,#00
DEC L03
L0005: JL L03,L05 [FALSE] L0017
INC L03
LOADB L04,L03 -> L09
JE L09,#30 [FALSE] L0006
STORE L08,#00
JUMP L0016
L0006: JE L09,#31 [FALSE] L0007
STORE L08,#01
JUMP L0016
L0007: JE L09,#32 [FALSE] L0008
STORE L08,#02
JUMP L0016
L0008: JE L09,#33 [FALSE] L0009
STORE L08,#03
JUMP L0016
L0009: JE L09,#34 [FALSE] L0010
STORE L08,#04
JUMP L0016
L0010: JE L09,#35 [FALSE] L0011
STORE L08,#05
JUMP L0016
L0011: JE L09,#36 [FALSE] L0012
STORE L08,#06
JUMP L0016
L0012: JE L09,#37 [FALSE] L0013
STORE L08,#07
JUMP L0016
L0013: JE L09,#38 [FALSE] L0014
STORE L08,#08
JUMP L0016
L0014: JE L09,#39 [FALSE] L0015
STORE L08,#09
JUMP L0016
L0015: RFALSE
L0016: MUL L06,L08 -> -(SP)
ADD L07,(SP)+ -> L07
DIV L06,#0a -> L06
JUMP L0005
L0017: JG L05,#03 [FALSE] L0018
STORE L07,#2710
L0018: RET L07
Routine R0022, 1 local (0000)
TEST_ATTR L00,#04 [FALSE] L0003
CALL R0023 (L00) -> -(SP)
JE (SP)+,#01 [FALSE] L0001
STORE G3b,L00
JUMP L0002
L0001: STORE G3c,L00
L0002: JUMP L0004
L0003: STORE G3a,L00
L0004: RTRUE
Routine R0023, 2 locals (0000, 0000)
TEST_ATTR L00,#05 [TRUE] L0001
STORE L01,#01
L0001: RET L01
Routine R0024, 4 locals (0000, 0000, 0000, 0000)
LOADB L00,#00 -> L03
STORE L02,#01
DEC L02
L0001: JL L02,L03 [FALSE] L0002
INC L02
LOADB L01,L02 -> -(SP)
STOREB L00,L02,(SP)+
JUMP L0001
L0002: RTRUE
Routine R0025, 0 locals ()
JE G03,#ffff [FALSE] L0001
STORE G01,G06
STORE G02,G07
JUMP L0002
L0001: DIV G03,#3c -> G01
MOD G03,#3c -> G02
L0002: RTRUE
Routine R0026, 2 locals (0000, 0000)
STORE G03,L00
STORE G04,L01
STORE G05,#00
JL L01,#00 [FALSE] L0001
SUB #00,L01 -> G05
L0001: RTRUE
Routine R0027, 5 locals (0000, 0000, 0000, 0000, 0000)
CALL R0132 -> -(SP)
POP
INSERT_OBJ G08,G00
CALL R0032 -> -(SP)
POP
CALL R0073 -> -(SP)
POP
STORE L00,#01
DEC L00
L0001: JL L00,#64 [FALSE] L0002
INC L00
RANDOM L00 -> L01
JUMP L0001
L0002: JE G0a,#00 [FALSE] L0018
L0003: STORE G16,#00
STORE G17,#00
STORE G15,#00
CALL R0003 (G12) -> -(SP)
POP
STORE G1d,G1c
STORE G1c,#00
JE G14,G08 [TRUE] L0005
LOADB G12,#00 -> G15
CALL R0029 (G14,#00) -> -(SP)
JE (SP)+,#00 [FALSE] L0004
CALL R0041 (G14) -> -(SP)
POP
PRINT " has better things to do.
"
L0004: JUMP L0015
L0005: JE G13,#01 [FALSE] L0006
STORE G13,#00
PRINT "(taking the first sixteen objects only)
"
L0006: STORE L04,#00
JE G15,#00 [TRUE] L0007
STORE L04,#01
L0007: JE G15,#00 [FALSE] L0008
LOADB G12,#00 -> G15
L0008: JE L04,#00 [FALSE] L0009
LOADB G12,#01 -> L00
LOADB G12,#02 -> G16
LOADB G12,#03 -> G17
L0009: JE L04,#00 [TRUE] L0010
STORE L00,#02
L0010: STORE G1b,#00
JE L00,#00 [FALSE] L0011
CALL R0028 (#00,#00,G15) -> -(SP)
POP
L0011: JG L00,#00 [FALSE] L0015
JE G16,#00 [TRUE] L0012
CALL R0028 (G16,G17,G15) -> -(SP)
POP
L0012: JE G16,#00 [FALSE] L0015
STORE G1b,#01
LOADB G18,#00 -> L01
JE L01,#00 [FALSE] L0013
PRINT "Nothing to do!
"
JUMP L0003
L0013: STORE L02,#01
DEC L02
L0014: JL L02,L01 [FALSE] L0015
INC L02
LOADB G18,L02 -> L03
PRINT_OBJ L03
PRINT ": "
CALL R0028 (L03,G17,G15) -> -(SP)
POP
JUMP L0014
L0015: JE G1c,#01 [FALSE] L0016
STORE G1e,#01
L0016: JE G0a,#00 [FALSE] L0017
JE G1e,#00 [FALSE] L0017
CALL R0033 -> -(SP)
POP
L0017: JUMP L0002
L0018: PRINT "
***"
JE G0a,#01 [FALSE] L0019
PRINT " You have died "
L0019: JE G0a,#02 [FALSE] L0020
PRINT " You have won "
L0020: JG G0a,#02 [FALSE] L0021
PRINT " "
CALL R0136 -> -(SP)
POP
PRINT " "
L0021: PRINT "***
"
CALL R0042 -> -(SP)
POP
L0022: PRINT "
Would you like to RESTART, RESTORE a saved game, give the FULL score for that
game"
JE G0a,#02 [FALSE] L0023
PRINT ", see some suggestions for AMUSING things to do"
L0023: PRINT " or QUIT?
"
L0024: PRINT_CHAR '?'
PRINT_CHAR ' '
READ G10,G11
LOADW G11,#01 -> L00
JE L00,"quit" [FALSE] L0025
QUIT
L0025: JE L00,"q" [FALSE] L0026
QUIT
L0026: JE L00,"restar" [FALSE] L0027
RESTART
L0027: JE L00,"restor" [FALSE] L0028
CALL R0048 -> -(SP)
POP
JUMP L0022
L0028: JE L00,"fullsc" [FALSE] L0029
CALL R0045 -> -(SP)
POP
JUMP L0022
L0029: JE G0a,#02 [FALSE] L0030
JE L00,"amusin" [FALSE] L0030
NEW_LINE
CALL R0135 -> -(SP)
POP
JUMP L0022
L0030: JE L00,"full" [FALSE] L0031
NEW_LINE
CALL R0045 -> -(SP)
POP
JUMP L0022
L0031: PRINT "Please answer RESTART, RESTORE, FULL"
JE G0a,#02 [FALSE] L0032
PRINT ", AMUSING"
L0032: PRINT " or QUIT.
"
JUMP L0024
orphan code fragment:
RTRUE
Routine R0028, 3 locals (0000, 0000, 0000)
STORE G16,L00
STORE G17,L01
STORE G15,L02
JE G1e,#01 [FALSE] L0001
JUMP L0004
L0001: CALL R0140 -> -(SP)
JE (SP)+,#00 [TRUE] L0002
RTRUE
L0002: JE G00,#00 [TRUE] L0003
GET_PROP G00,#05 -> L00
JE L00,#ffff [TRUE] L0003
CALL L00 -> -(SP)
JE (SP)+,#00 [TRUE] L0003
RTRUE
L0003: JG G16,#01 [FALSE] L0004
GET_PROP G16,#05 -> L00
JE L00,#ffff [TRUE] L0004
CALL L00 -> -(SP)
JE (SP)+,#00 [TRUE] L0004
RTRUE
L0004: LOADW #0c56,G15 -> L01
CALL L01 -> -(SP)
POP
RTRUE
Routine R0029, 3 locals (0000, 0000, 0000)
STORE G1f,L01
GET_PROP L00,#07 -> L02
JE L02,#ffff [TRUE] L0001
CALL L02 -> -(SP)
JE (SP)+,#00 [TRUE] L0001
RTRUE
L0001: RFALSE
Routine R0030, 2 locals (0000, 0000)
STORE L01,G00
GET_PROP L01,#06 -> L00
JE L00,#ffff [FALSE] L0001
JUMP L0002
L0001: CALL L00 -> -(SP)
JE (SP)+,#00 [TRUE] L0002
RTRUE
L0002: STORE L01,#00
LOADB G12,#01 -> L00
JG L00,#00 [FALSE] L0003
STORE L01,G16
L0003: JL L01,#02 [FALSE] L0004
RFALSE
L0004: GET_PROP L01,#06 -> L00
JE L00,#ffff [FALSE] L0005
RFALSE
L0005: CALL L00 -> -(SP)
JE (SP)+,#00 [TRUE] L0006
RTRUE
L0006: CALL R0141 -> -(SP)
RET (SP)+
Routine R0031, 2 locals (0000, 0000)
STORE L01,G00
JE L01,#00 [FALSE] L0001
RFALSE
L0001: GET_PROP L01,#06 -> L00
JE L00,#ffff [FALSE] L0002
RFALSE
L0002: CALL L00 -> -(SP)
JE (SP)+,#00 [TRUE] L0003
RTRUE
L0003: CALL R0141 -> -(SP)
RET (SP)+
Routine R0032, 1 local (0000)
PRINT_PADDR S001
PRINT_PADDR S002
PRINT "Release "
LOADW #00,#01 -> -(SP)
AND (SP)+,#03ff -> -(SP)
PRINT_NUM (SP)+
PRINT " / Serial number "
STORE L00,#12
DEC L00
L0001: JL L00,#17 [FALSE] L0002
INC L00
LOADB #00,L00 -> -(SP)
PRINT_CHAR (SP)+
JUMP L0001
L0002: PRINT " (Compiled by Inform v"
PRINT "798"
PRINT ")
"
RTRUE
Routine R0033, 1 local (0000)
INC G07
JE G03,#ffff [TRUE] L0002
JL G04,#00 [TRUE] L0001
ADD G03,G04 -> G03
JUMP L0002
L0001: DEC G05
JE G05,#00 [FALSE] L0002
INC G03
SUB #00,G04 -> G05
L0002: CALL R0134 -> -(SP)
POP
STORE L00,G09
GET_PARENT G08 -> -(SP)
CALL R0038 ((SP)+) -> G09
JE L00,#00 [FALSE] L0003
JE G09,#01 [FALSE] L0003
NEW_LINE
GET_PARENT G08 -> G00
CALL R0073 (#01) -> -(SP)
POP
L0003: JE L00,#01 [FALSE] L0004
JE G09,#00 [FALSE] L0004
NEW_LINE
PRINT "It is now pitch dark in here!
"
STORE G00,#0c
L0004: RTRUE
Routine R0034, 2 locals (0000, 0000)
GET_PROP L00,#15 -> L01
JG L01,G07 [FALSE] L0001
RFALSE
L0001: JE L01,#00 [FALSE] L0002
RFALSE
L0002: PUT_PROP L00,#15,#00
RTRUE
Routine R0035, 2 locals (0000, 0000)
GET_PROP L00,#15 -> L01
JE L01,#00 [FALSE] L0001
RFALSE
L0001: DEC L01
PUT_PROP L00,#15,L01
JG L01,#00 [FALSE] L0002
RFALSE
L0002: RTRUE
Routine R0036, 2 locals (0000, 0000)
ADD G07,L01 -> L01
PUT_PROP L00,#15,L01
RTRUE
Routine R0037, 2 locals (0000, 0000)
GET_PROP L00,#15 -> -(SP)
SUB (SP)+,G07 -> L01
RET L01
Routine R0038, 1 local (0000)
TEST_ATTR L00,#00 [FALSE] L0001
RTRUE
L0001: TEST_ATTR L00,#09 [FALSE] L0002
TEST_ATTR L00,#0b [FALSE] L0002
TEST_ATTR L00,#0c [TRUE] L0002
RFALSE
L0002: GET_CHILD L00 -> L00 [TRUE] L0003
L0003: JE L00,#00 [TRUE] L0006
CALL R0038 (L00) -> -(SP)
JE #01,(SP)+ [FALSE] L0004
RTRUE
L0004: GET_SIBLING L00 -> L00 [TRUE] L0005
L0005: JUMP L0003
L0006: RFALSE
Routine R0039, 1 local (0000)
TEST_ATTR L00,#06 [TRUE] L0001
GET_PROP L00,#03 -> -(SP)
PRINT_PADDR (SP)+
PRINT " "
L0001: PRINT_OBJ L00
RTRUE
Routine R0040, 1 local (0000)
TEST_ATTR L00,#06 [TRUE] L0001
PRINT "the "
L0001: PRINT_OBJ L00
RTRUE
Routine R0041, 1 local (0000)
TEST_ATTR L00,#06 [TRUE] L0001
PRINT "The "
L0001: PRINT_OBJ L00
RTRUE
Routine R0042, 0 locals ()
Action routine for:
"score"
JE G0a,#00 [FALSE] L0001
PRINT "You have so far scored "
L0001: JG G0a,#00 [FALSE] L0002
PRINT "In that game you scored "
L0002: PRINT_NUM G06
PRINT " out of a possible "
PRINT_NUM #00
PRINT ", in "
PRINT_NUM G07
PRINT " turns"
CALL R0133 -> -(SP)
POP
RTRUE
Routine R0043, 1 local (0000)
LOADB G4b,L00 -> -(SP)
JE (SP)+,#00 [FALSE] L0001
STOREB G4b,L00,#01
LOADB G4a,L00 -> -(SP)
ADD G06,(SP)+ -> G06
L0001: RTRUE
Routine R0044, 2 locals (0000, 0000)
PRINT " "
STORE L01,L00
JL L01,#00 [FALSE] L0001
SUB #00,L00 -> L01
MUL L01,#0a -> L01
L0001: JL L01,#0a [FALSE] L0002
PRINT " "
JUMP L0004
L0002: JL L01,#64 [FALSE] L0003
PRINT " "
JUMP L0004
L0003: JL L01,#03e8 [FALSE] L0004
PRINT " "
L0004: PRINT_NUM L00
PRINT " "
RTRUE
Routine R0045, 2 locals (0000, 0000)
Action routine for:
"full"
CALL R0042 -> -(SP)
POP
JE G06,#00 [FALSE] L0001
RFALSE
L0001: NEW_LINE
JG G0a,#00 [FALSE] L0002
PRINT "The score was "
L0002: JE G0a,#00 [FALSE] L0003
PRINT "The score is "
L0003: PRINT "made up as follows:
"
SUB #01,#01 -> L01
STORE L00,#00
DEC L00
L0004: JL L00,L01 [FALSE] L0006
INC L00
LOADB G4b,L00 -> -(SP)
JE (SP)+,#01 [FALSE] L0005
LOADB G4a,L00 -> -(SP)
CALL R0044 ((SP)+) -> -(SP)
POP
CALL R0142 (L00) -> -(SP)
POP
L0005: JUMP L0004
L0006: JE G0d,#00 [TRUE] L0007
CALL R0044 (G0d) -> -(SP)
POP
PRINT "finding sundry items
"
L0007: JE G0c,#00 [TRUE] L0008
CALL R0044 (G0c) -> -(SP)
POP
PRINT "visiting various places
"
L0008: NEW_LINE
CALL R0044 (G06) -> -(SP)
POP
PRINT "total (out of "
PRINT_NUM #00
PRINT ")
"
RTRUE
Routine R0046, 1 local (0000)
Action routine for:
"die"
PRINT "Are you sure you want to quit? "
L0001: READ G10,G11
LOADW G11,#01 -> L00
JE L00,"yes","y" [FALSE] L0002
QUIT
L0002: JE L00,"no","n" [FALSE] L0003
RTRUE
L0003: PRINT "Please answer yes or no."
PRINT_CHAR '>'
PRINT_CHAR ' '
JUMP L0001
orphan code fragment:
RTRUE
Routine R0047, 1 local (0000)
Action routine for:
"restar"
PRINT "Are you sure you want to restart? "
L0001: READ G10,G11
LOADW G11,#01 -> L00
JE L00,"yes" [FALSE] L0002
RESTART
L0002: JE L00,"y" [FALSE] L0003
RESTART
L0003: JE L00,"no" [FALSE] L0004
RTRUE
L0004: JE L00,"n" [FALSE] L0005
RTRUE
L0005: PRINT "Please answer yes or no."
PRINT_CHAR '>'
PRINT_CHAR ' '
JUMP L0001
orphan code fragment:
RTRUE
Routine R0048, 0 locals ()
Action routine for:
"restor"
RESTORE [TRUE] L0001
PRINT_RET "Failed."
L0001: PRINT "Ok.
"
RTRUE
Routine R0049, 0 locals ()
Action routine for:
"save"
SAVE [TRUE] L0001
PRINT_RET "Failed."
L0001: PRINT "Ok.
"
RTRUE
Routine R0050, 0 locals ()
Action routine for:
"verify"
VERIFY [TRUE] L0001
JUMP L0002
L0001: PRINT_RET "The game file has verified as intact."
L0002: PRINT_RET "The game file did not verify properly, and may be
corrupted (unless you are running it on a primitive interpreter which does not
properly implement the VERIFY code)."
Routine R0051, 1 local (0000)
Action routine for:
"script"
"script on"
JE G0b,#01 [FALSE] L0001
PRINT_RET "Transcripting is already on."
L0001: STORE G0b,#01
LOADW #00,#08 -> -(SP)
OR (SP)+,#01 -> L00
STOREW #00,#08,L00
PRINT "Start of a transcript of
"
CALL R0032 -> -(SP)
POP
RTRUE
Routine R0052, 1 local (0000)
Action routine for:
"script off"
"noscri"
JE G0b,#00 [FALSE] L0001
PRINT_RET "Transcripting is already off."
L0001: PRINT "
End of transcript.
"
STORE G0b,#00
LOADW #00,#08 -> -(SP)
AND (SP)+,#fffe -> L00
STOREW #00,#08,L00
RTRUE
Routine R0053, 1 local (0000)
Action routine for:
"i"
GET_CHILD G08 -> L00 [TRUE] L0001
L0001: JE L00,#00 [FALSE] L0002
PRINT_RET "You are carrying nothing."
L0002: PRINT "You are carrying:
"
CALL R0054 (G08) -> -(SP)
POP
CALL R0030 -> -(SP)
POP
RTRUE
Routine R0054, 4 locals (0000, 0000, 0000, 0000)
STORE L02,#01
JE L01,#00 [TRUE] L0003
STORE L03,#01
DEC L03
L0001: JL L03,L01 [FALSE] L0002
INC L03
PRINT " "
JUMP L0001
L0002: CALL R0075 (L00,#00) -> L02
NEW_LINE
L0003: JE L02,#00 [FALSE] L0004
RTRUE
L0004: GET_CHILD L00 -> L02 [TRUE] L0005
L0005: JE L02,#00 [TRUE] L0007
ADD L01,#01 -> -(SP)
CALL R0054 (L02,(SP)+) -> -(SP)
POP
GET_SIBLING L02 -> L02 [TRUE] L0006
L0006: JUMP L0005
L0007: RTRUE
Routine R0055, 1 local (0000)
Action routine for:
"get MULTI"
"peel NOUN"
"peel off NOUN"
CALL R0056 (G00) -> L00
JE L00,#00 [TRUE] L0001
RTRUE
L0001: CALL R0030 -> -(SP)
JE #01,(SP)+ [FALSE] L0002
RTRUE
L0002: STORE G1c,G1d
JE G1c,#00 [FALSE] L0003
PRINT "Taken.
"
L0003: RTRUE
Routine R0056, 4 locals (0000, 0000, 0000, 0000)
JE G16,G08 [FALSE] L0001
PRINT_RET "As the bishop said to the actress."
L0001: TEST_ATTR G16,#04 [FALSE] L0002
PRINT "I don't suppose "
CALL R0040 (G16) -> -(SP)
POP
PRINT_RET " would care for that."
L0002: GET_PARENT G16 -> L01
JE L01,G08 [FALSE] L0003
PRINT_RET "You already have that."
L0003: JE L01,L00 [TRUE] L0007
TEST_ATTR L01,#09 [TRUE] L0004
TEST_ATTR L01,#0a [TRUE] L0004
PRINT_RET "That isn't available."
L0004: TEST_ATTR L01,#09 [FALSE] L0005
TEST_ATTR L01,#0c [TRUE] L0005
PRINT "Unfortunately the "
PRINT_OBJ L01
PRINT_RET " isn't open."
L0005: GET_PARENT L01 -> L01
JE L01,G08 [FALSE] L0006
STORE L01,L00
L0006: JUMP L0003
L0007: TEST_ATTR G16,#10 [FALSE] L0008
PRINT_RET "That's hardly portable."
L0008: TEST_ATTR G16,#11 [FALSE] L0009
PRINT_RET "Fixed in place."
L0009: GET_CHILD G08 -> L02 [TRUE] L0010
L0010: STORE L03,#00
L0011: JE L02,#00 [TRUE] L0014
TEST_ATTR L02,#02 [TRUE] L0012
ADD L03,#01 -> L03
L0012: GET_SIBLING L02 -> L02 [TRUE] L0013
L0013: JUMP L0011
L0014: JL L03,#64 [TRUE] L0024
JE #00,#00 [TRUE] L0023
GET_PARENT #00 -> -(SP)
JE (SP)+,G08 [TRUE] L0015
PRINT_RET "You're carrying too many things already."
L0015: GET_CHILD G08 -> L03 [TRUE] L0016
L0016: STORE L02,#00
L0017: JE L03,#00 [TRUE] L0020
JE L03,#00 [TRUE] L0018
TEST_ATTR L03,#02 [TRUE] L0018
TEST_ATTR L03,#00 [TRUE] L0018
STORE L02,L03
L0018: GET_SIBLING L03 -> L03 [TRUE] L0019
L0019: JUMP L0017
L0020: JE L02,#00 [TRUE] L0021
PRINT "(putting "
CALL R0040 (L02) -> -(SP)
POP
PRINT " into "
CALL R0040 (#00) -> -(SP)
POP
PRINT " to make room)
"
REMOVE_OBJ L02
INSERT_OBJ L02,#00
JUMP L0022
L0021: PRINT_RET "You're carrying too many things already."
L0022: JUMP L0024
L0023: PRINT_RET "You're carrying too many things already."
L0024: INSERT_OBJ G16,G08
TEST_ATTR G16,#07 [TRUE] L0025
SET_ATTR G16,#07
TEST_ATTR G16,#1b [FALSE] L0025
ADD G06,#04 -> G06
ADD G0d,#04 -> G0d
L0025: RFALSE
Routine R0057, 1 local (0000)
Action routine for:
"put down MULTIHELD"
"put MULTIHELD down"
"discar MULTIHELD"
GET_PARENT G16 -> L00
JE L00,G00 [FALSE] L0001
PRINT_RET "Already on the floor."
L0001: JE L00,G08 [TRUE] L0002
PRINT_RET "You haven't got that."
L0002: TEST_ATTR G16,#02 [FALSE] L0003
PRINT "(First taking it off)
"
CLEAR_ATTR G16,#02
L0003: GET_PARENT G08 -> -(SP)
INSERT_OBJ G16,(SP)+
CALL R0030 -> -(SP)
JE #01,(SP)+ [FALSE] L0004
RTRUE
L0004: PRINT "Dropped.
"
RTRUE
Routine R0058, 1 local (0000)
Action routine for:
"get MULTIINSIDE from NOUN"
"get MULTIINSIDE off NOUN"
"remove MULTIINSIDE from NOUN"
GET_PARENT G16 -> L00
TEST_ATTR L00,#09 [FALSE] L0001
TEST_ATTR L00,#0c [TRUE] L0001
PRINT_RET "Alas, it is closed."
L0001: JE L00,G17 [TRUE] L0002
PRINT_RET "But it isn't there now."
L0002: TEST_ATTR G17,#02 [FALSE] L0003
PRINT_RET "You'll need to take it off first."
L0003: CALL R0056 (G17) -> L00
JE L00,#00 [TRUE] L0004
RTRUE
L0004: STORE G15,#0d
CALL R0030 -> -(SP)
JE #01,(SP)+ [FALSE] L0005
RTRUE
L0005: STORE G15,#0e
CALL R0030 -> -(SP)
JE #01,(SP)+ [FALSE] L0006
RTRUE
L0006: PRINT "Removed.
"
RTRUE
Routine R0059, 2 locals (0000, 0000)
Action routine for:
"put MULTIEXCEPT on NOUN"
"put MULTIEXCEPT onto NOUN"
"discar MULTIEXCEPT on NOUN"
"discar MULTIEXCEPT onto NOUN"
JE G17,#0b [FALSE] L0001
STORE G15,#14
CALL R0028 (G16,#00) -> -(SP)
POP
RFALSE
L0001: GET_PARENT G16 -> -(SP)
JE (SP)+,G08 [TRUE] L0002
PRINT_RET "You need to be holding it before you can put it onto
something else."
L0002: TEST_ATTR G17,#0a [TRUE] L0003
PRINT "Putting things on "
CALL R0040 (G17) -> -(SP)
POP
PRINT_RET " would achieve nothing."
L0003: GET_PARENT G17 -> -(SP)
JE (SP)+,G08 [FALSE] L0004
PRINT_RET "You lack the dexterity."
L0004: TEST_ATTR G16,#02 [FALSE] L0005
PRINT "(first taking it off)
"
CLEAR_ATTR G16,#02
L0005: STORE L00,#00
GET_CHILD G17 -> L01 [TRUE] L0006
L0006: JE L01,#00 [TRUE] L0008
GET_SIBLING L01 -> L01 [TRUE] L0007
L0007: INC L00
JUMP L0006
L0008: GET_PROP G17,#18 -> -(SP)
JL L00,(SP)+ [TRUE] L0009
PRINT "There is no more room on "
CALL R0040 (G17) -> -(SP)
POP
PRINT_RET "."
L0009: INSERT_OBJ G16,G17
CALL R0030 -> -(SP)
JE #01,(SP)+ [FALSE] L0010
RTRUE
L0010: JE G1b,#01 [FALSE] L0011
PRINT_RET "Done."
L0011: PRINT "You put the "
PRINT_OBJ G16
PRINT " on "
CALL R0040 (G17) -> -(SP)
POP
PRINT_RET "."
Routine R0060, 2 locals (0000, 0000)
Action routine for:
"put MULTIEXCEPT in NOUN"
"put MULTIEXCEPT into NOUN"
"insert MULTIEXCEPT in NOUN"
"insert MULTIEXCEPT into NOUN"
"discar MULTIEXCEPT in NOUN"
"discar MULTIEXCEPT into NOUN"
"discar MULTIEXCEPT down NOUN"
JE G17,#0b [FALSE] L0001
STORE G15,#14
CALL R0028 (G16,#00) -> -(SP)
POP
RFALSE
L0001: GET_PARENT G16 -> -(SP)
JE (SP)+,G08 [TRUE] L0002
PRINT_RET "You need to be holding it before you can put it into
something else."
L0002: TEST_ATTR G17,#09 [TRUE] L0003
PRINT_RET "That can't contain things."
L0003: TEST_ATTR G17,#0c [TRUE] L0004
PRINT_RET "Alas, it is closed."
L0004: TEST_ATTR G17,#02 [FALSE] L0005
PRINT_RET "You'll need to take it off first."
L0005: TEST_ATTR G16,#02 [FALSE] L0006
PRINT "(first taking it off)
"
CLEAR_ATTR G16,#02
L0006: STORE L00,#00
GET_CHILD G17 -> L01 [TRUE] L0007
L0007: JE L01,#00 [TRUE] L0009
GET_SIBLING L01 -> L01 [TRUE] L0008
L0008: INC L00
JUMP L0007
L0009: GET_PROP G17,#18 -> -(SP)
JL L00,(SP)+ [TRUE] L0010
PRINT "There is no more room in "
CALL R0040 (G17) -> -(SP)
POP
PRINT_RET "."
L0010: INSERT_OBJ G16,G17
CALL R0030 -> -(SP)
JE #01,(SP)+ [FALSE] L0011
RTRUE
L0011: JE G1b,#01 [FALSE] L0012
PRINT_RET "Done."
L0012: PRINT "You put the "
PRINT_OBJ G16
PRINT " into "
CALL R0040 (G17) -> -(SP)
POP
PRINT_RET "."
Routine R0061, 2 locals (0000, 0000)
Action routine for:
"transf NOUN to NOUN"
"clear NOUN to NOUN"
STORE L01,#14
TEST_ATTR G17,#09 [FALSE] L0001
STORE L01,#12
JUMP L0002
L0001: TEST_ATTR G17,#0a [FALSE] L0002
STORE L01,#13
L0002: GET_PARENT G16 -> L00
JE L00,G08 [TRUE] L0007
L0003: JE L00,#00 [TRUE] L0006
TEST_ATTR L00,#0c [TRUE] L0004
PRINT_RET "That isn't in your possession."
L0004: GET_PARENT L00 -> L00
JE L00,G08 [FALSE] L0005
JUMP L0007
L0005: JUMP L0003
L0006: PRINT_RET "First pick that up."
L0007: INSERT_OBJ G16,G08
CALL R0028 (G16,G17,L01) -> -(SP)
POP
RFALSE
Routine R0062, 0 locals ()
Action routine for:
"empty NOUN"
"empty out NOUN"
"empty NOUN out"
STORE G17,#0b
CALL R0063 -> -(SP)
POP
RTRUE
Routine R0063, 2 locals (0000, 0000)
Action routine for:
"empty NOUN to NOUN"
"empty NOUN into NOUN"
"empty NOUN on NOUN"
"empty NOUN onto NOUN"
TEST_ATTR G16,#09 [TRUE] L0001
CALL R0041 (G16) -> -(SP)
POP
PRINT_RET " can't contain things."
L0001: TEST_ATTR G16,#0c [TRUE] L0002
CALL R0041 (G16) -> -(SP)
POP
PRINT_RET " is closed."
L0002: JE G17,#0b [TRUE] L0004
TEST_ATTR G17,#09 [TRUE] L0003
CALL R0041 (G17) -> -(SP)
POP
PRINT_RET " can't contain things."
L0003: TEST_ATTR G17,#0c [TRUE] L0004
CALL R0041 (G17) -> -(SP)
POP
PRINT_RET " is closed."
L0004: GET_CHILD G16 -> L00 [TRUE] L0005
L0005: JE L00,#00 [FALSE] L0006
CALL R0040 (G16) -> -(SP)
POP
PRINT_RET " is empty already."
L0006: JE L00,#00 [TRUE] L0008
GET_SIBLING L00 -> L01 [TRUE] L0007
L0007: PRINT_OBJ L00
PRINT ": "
CALL R0028 (L00,G17,#17) -> -(SP)
POP
STORE L00,L01
JUMP L0006
L0008: RTRUE
Routine R0064, 1 local (0000)
Action routine for:
"get in NOUN"
"go throug NOUN"
"enter NOUN"
TEST_ATTR G16,#08 [FALSE] L0001
CALL R0067 -> -(SP)
POP
RTRUE
L0001: GET_PARENT G08 -> L00
JE L00,G00 [TRUE] L0002
PRINT "But you're already in the "
PRINT_OBJ L00
PRINT_RET "."
L0002: TEST_ATTR G16,#0f [TRUE] L0003
PRINT_RET "A surreal idea."
L0003: GET_PARENT G16 -> L00
JE L00,#01 [FALSE] L0004
CALL R0067 -> -(SP)
POP
RTRUE
L0004: JE L00,G00 [TRUE] L0005
PRINT_RET "You can only get into something on the floor."
L0005: INSERT_OBJ G08,G16
PRINT "You get into the "
PRINT_OBJ G16
PRINT ".
"
CALL R0069 (G16) -> -(SP)
POP
RTRUE
Routine R0065, 0 locals ()
Action routine for:
"get out"
"stand"
"stand up"
"exit"
GET_PARENT G08 -> -(SP)
JE (SP)+,G00 [FALSE] L0001
PRINT_RET "But you're aren't in anything at the moment."
L0001: INSERT_OBJ G08,G00
PRINT "You are on your own two feet again.
"
CALL R0073 (#01) -> -(SP)
POP
CALL R0030 -> -(SP)
POP
RTRUE
Routine R0066, 0 locals ()
Action routine for:
"go"
PRINT_RET "You'll have to say which compass direction to go in."
Routine R0067, 4 locals (0000, 0000, 0000, 0000)
Action routine for:
"go NOUN"
STORE L03,#00
GET_PARENT G08 -> L00
JE G00,#0c [TRUE] L0002
JE L00,G00 [TRUE] L0002
GET_PROP L00,#05 -> L01
JE L01,#ffff [TRUE] L0001
CALL L01 -> -(SP)
JE (SP)+,#00 [TRUE] L0001
STORE L03,L00
GET_PARENT L00 -> L00
JUMP L0002
L0001: PRINT "You'll have to get out of "
CALL R0040 (L00) -> -(SP)
POP
PRINT_RET " first."
L0002: GET_PROP G16,#08 -> -(SP)
GET_PROP L00,(SP)+ -> L01
JE L01,#00 [FALSE] L0003
GET_PROP L00,#17 -> L00
PRINT_PADDR L00
NEW_LINE
RFALSE
L0003: TEST_ATTR L01,#08 [FALSE] L0008
TEST_ATTR L01,#01 [FALSE] L0004
PRINT_RET "You can't go that way."
L0004: TEST_ATTR L01,#0c [TRUE] L0007
JE G16,#0a [FALSE] L0005
PRINT "You are unable to climb "
CALL R0040 (L01) -> -(SP)
POP
PRINT_RET "."
L0005: JE G16,#0b [FALSE] L0006
PRINT "You are unable to descend "
CALL R0040 (L01) -> -(SP)
POP
PRINT_RET "."
L0006: PRINT "You can't, since "
CALL R0040 (L01) -> -(SP)
POP
PRINT_RET " is in the way."
L0007: GET_PROP L01,#13 -> L01
JE L01,#00 [FALSE] L0008
PRINT "You can't, since "
CALL R0040 (L01) -> -(SP)
POP
PRINT_RET " leads nowhere."
L0008: JE L03,#00 [FALSE] L0009
INSERT_OBJ G08,L01
L0009: JE L03,#00 [TRUE] L0010
INSERT_OBJ L03,L01
L0010: CALL R0038 (L01) -> L02
JE L02,#00 [TRUE] L0011
STORE G00,L01
STORE G09,#01
L0011: JE L02,#00 [FALSE] L0013
JE G00,#0c [FALSE] L0012
CALL R0137 -> -(SP)
POP
L0012: STORE G00,#0c
STORE G09,#00
L0013: CALL R0031 -> -(SP)
JE #01,(SP)+ [FALSE] L0014
RTRUE
L0014: CALL R0073 (#01) -> -(SP)
POP
RTRUE
Routine R0068, 5 locals (0000, 0000, 0000, 0000, 0000)
NEW_LINE
PRINT "On "
CALL R0040 (L00) -> -(SP)
POP
STORE L04,#00
GET_CHILD L00 -> L02 [TRUE] L0001
L0001: JE L02,#00 [TRUE] L0003
GET_SIBLING L02 -> L02 [TRUE] L0002
L0002: INC L04
JUMP L0001
L0003: JE L04,#01 [FALSE] L0004
PRINT " is "
JUMP L0005
L0004: PRINT " are "
L0005: GET_CHILD L00 -> L01 [TRUE] L0006
L0006: JE L01,#00 [TRUE] L0010
ADD L03,#01 -> L03
CALL R0075 (L01,#01) -> -(SP)
POP
SUB L04,#01 -> -(SP)
JE L03,(SP)+ [FALSE] L0007
PRINT " and "
L0007: SUB L04,#01 -> -(SP)
JL L03,(SP)+ [FALSE] L0008
PRINT ", "
L0008: GET_SIBLING L01 -> L01 [TRUE] L0009
L0009: JUMP L0006
L0010: PRINT ".
"
RTRUE
Routine R0069, 6 locals (0000, 0000, 0000, 0000, 0000, 0000)
GET_CHILD L00 -> L01 [TRUE] L0001
L0001: STORE L02,#00
L0002: JE L01,#00 [TRUE] L0011
TEST_ATTR L01,#01 [TRUE] L0009
TEST_ATTR L01,#10 [TRUE] L0007
SET_ATTR L01,#0e
INC L02
TEST_ATTR L01,#07 [TRUE] L0006
GET_PROP L01,#04 -> L03
TEST_ATTR L01,#08 [FALSE] L0003
TEST_ATTR L01,#0c [TRUE] L0003
GET_PROP L01,#14 -> L03
L0003: TEST_ATTR L01,#16 [FALSE] L0004
TEST_ATTR L01,#17 [TRUE] L0004
GET_PROP L01,#14 -> L03
L0004: JE L03,#00 [TRUE] L0006
NEW_LINE
PRINT_PADDR L03
NEW_LINE
STORE L04,#01
CLEAR_ATTR L01,#0e
DEC L02
TEST_ATTR L01,#0a [FALSE] L0006
GET_CHILD L01 -> -(SP) [TRUE] L0005
L0005: JE (SP)+,#00 [TRUE] L0006
CALL R0068 (L01) -> -(SP)
POP
L0006: JUMP L0009
L0007: TEST_ATTR L01,#0a [FALSE] L0009
GET_CHILD L01 -> -(SP) [TRUE] L0008
L0008: JE (SP)+,#00 [TRUE] L0009
CALL R0068 (L01) -> -(SP)
POP
L0009: GET_SIBLING L01 -> L01 [TRUE] L0010
L0010: JUMP L0002
L0011: JE L02,#00 [FALSE] L0012
RTRUE
L0012: NEW_LINE
JE L00,G00 [TRUE] L0013
PRINT "In "
CALL R0040 (L00) -> -(SP)
POP
PRINT " you"
L0013: JE L00,G00 [FALSE] L0014
PRINT "You"
L0014: PRINT " can "
JE L04,#01 [FALSE] L0015
PRINT "also "
L0015: PRINT "see "
STORE L05,#00
GET_CHILD L00 -> L01 [TRUE] L0016
L0016: JE L01,#00 [TRUE] L0020
TEST_ATTR L01,#0e [FALSE] L0018
ADD L05,#01 -> L05
CALL R0075 (L01,#01) -> -(SP)
POP
SUB L02,#01 -> -(SP)
JE L05,(SP)+ [FALSE] L0017
PRINT " and "
L0017: SUB L02,#01 -> -(SP)
JL L05,(SP)+ [FALSE] L0018
PRINT ", "
L0018: GET_SIBLING L01 -> L01 [TRUE] L0019
L0019: JUMP L0016
L0020: JE L00,G00 [TRUE] L0021
PRINT ".
"
L0021: JE L00,G00 [FALSE] L0022
PRINT " here.
"
L0022: RTRUE
Routine R0070, 0 locals ()
Action routine for:
"brief"
STORE G0e,#01
PRINT_PADDR S001
PRINT_RET " is now in its normal "brief" printing mode, which
gives long descriptions of places never before visited and short descriptions
otherwise."
Routine R0071, 0 locals ()
Action routine for:
"long"
STORE G0e,#02
PRINT_PADDR S001
PRINT_RET " is now in its "verbose" mode, which always gives long
descriptions of locations (even if you've been there before)."
Routine R0072, 0 locals ()
Action routine for:
"short"
STORE G0e,#03
PRINT_PADDR S001
PRINT_RET " is now in its "superbrief" mode, which always gives
short descriptions of locations (even if you haven't been there before)."
Routine R0073, 3 locals (0000, 0000, 0000)
Action routine for:
"l"
STORE L02,G00
JE L02,G0f [TRUE] L0001
CALL R0138 -> -(SP)
POP
L0001: NEW_LINE
PRINT_OBJ G00
GET_PARENT G08 -> L01
JE G00,#0c [TRUE] L0002
JE L01,G00 [TRUE] L0002
PRINT " (in the "
PRINT_OBJ L01
PRINT ")"
STORE L02,L01
L0002: NEW_LINE
JE L00,#01 [TRUE] L0003
JUMP L0006
L0003: JE G0e,#02 [FALSE] L0004
JUMP L0006
L0004: JE G0e,#03 [FALSE] L0005
JUMP L0007
L0005: TEST_ATTR G00,#13 [FALSE] L0006
JE L00,#01 [FALSE] L0006
JUMP L0007
L0006: GET_PROP G00,#02 -> L01
PRINT_PADDR L01
NEW_LINE
L0007: TEST_ATTR G00,#13 [TRUE] L0008
SET_ATTR G00,#13
TEST_ATTR G00,#1b [FALSE] L0008
ADD G06,#05 -> G06
ADD G0c,#05 -> G0c
L0008: JE L02,G00 [TRUE] L0009
CALL R0069 (G00) -> -(SP)
POP
L0009: CALL R0069 (L02) -> -(SP)
POP
CALL R0139 -> -(SP)
POP
STORE G15,#1d
CALL R0031 -> -(SP)
JE #01,(SP)+ [FALSE] L0010
RTRUE
L0010: RTRUE
Routine R0074, 1 local (0000)
Action routine for:
"l at NOUN"
"check NOUN"
JE G00,#0c [FALSE] L0001
PRINT_RET "Darkness, noun. An absence of light to see by."
L0001: JE G16,G08 [FALSE] L0002
PRINT_RET "As good-looking as ever."
L0002: TEST_ATTR G16,#1a [FALSE] L0003
CALL R0123 -> -(SP)
POP
RFALSE
L0003: GET_PROP G16,#02 -> L00
JE L00,#00 [FALSE] L0005
TEST_ATTR G16,#09 [FALSE] L0004
CALL R0123 -> -(SP)
POP
RFALSE
L0004: PRINT "You see nothing special about "
CALL R0040 (G16) -> -(SP)
POP
PRINT_RET "."
L0005: PRINT_PADDR L00
NEW_LINE
TEST_ATTR G16,#16 [FALSE] L0007
PRINT "It is currently switched "
TEST_ATTR G16,#17 [FALSE] L0006
PRINT "on.
"
L0006: TEST_ATTR G16,#17 [TRUE] L0007
PRINT "off.
"
L0007: CALL R0030 -> -(SP)
JE #01,(SP)+ [FALSE] L0008
RTRUE
L0008: RTRUE
Routine R0075, 7 locals (0000, 0000, 0000, 0000, 0000, 0000, 0000)
JE L01,#02 [TRUE] L0001
CALL R0039 (L00) -> -(SP)
POP
L0001: JE L01,#02 [FALSE] L0002
CALL R0040 (L00) -> -(SP)
POP
L0002: TEST_ATTR L00,#00 [FALSE] L0003
PRINT " (providing light)"
L0003: TEST_ATTR L00,#02 [FALSE] L0004
PRINT " (being worn)"
L0004: TEST_ATTR L00,#09 [FALSE] L0020
JE L01,#02 [TRUE] L0005
PRINT " (which is "
L0005: JE L01,#02 [FALSE] L0006
PRINT ", which is "
L0006: TEST_ATTR L00,#0c [TRUE] L0007
PRINT "closed"
TEST_ATTR L00,#0b [FALSE] L0007
JUMP L0019
L0007: TEST_ATTR L00,#0c [FALSE] L0008
PRINT "open"
L0008: GET_CHILD L00 -> L02 [TRUE] L0009
L0009: JE L02,#00 [FALSE] L0010
PRINT " but empty"
JUMP L0019
L0010: JE L01,#00 [FALSE] L0011
STORE L06,#01
JUMP L0019
L0011: PRINT " and contains "
STORE L05,#00
STORE L03,L02
L0012: JE L03,#00 [TRUE] L0014
GET_SIBLING L03 -> L03 [TRUE] L0013
L0013: INC L05
JUMP L0012
L0014: STORE L04,#00
L0015: JE L02,#00 [TRUE] L0019
INC L04
CALL R0075 (L02,#01) -> -(SP)
POP
SUB L05,#01 -> -(SP)
JE L04,(SP)+ [FALSE] L0016
PRINT " and "
L0016: SUB L05,#01 -> -(SP)
JL L04,(SP)+ [FALSE] L0017
PRINT ", "
L0017: GET_SIBLING L02 -> L02 [TRUE] L0018
L0018: JUMP L0015
L0019: JE L01,#02 [TRUE] L0020
PRINT ")"
L0020: TEST_ATTR L00,#0a [FALSE] L0035
GET_CHILD L00 -> L02 [TRUE] L0021
L0021: JE L02,#00 [TRUE] L0035
JE L01,#02 [TRUE] L0022
PRINT " (on which "
L0022: JE L01,#02 [FALSE] L0023
PRINT ", on top of which "
L0023: JE L01,#00 [FALSE] L0024
STORE L06,#01
JUMP L0034
L0024: STORE L05,#00
STORE L03,L02
L0025: JE L03,#00 [TRUE] L0027
GET_SIBLING L03 -> L03 [TRUE] L0026
L0026: INC L05
JUMP L0025
L0027: JE L05,#01 [FALSE] L0028
PRINT "is "
JUMP L0029
L0028: PRINT "are "
L0029: STORE L04,#00
L0030: JE L02,#00 [TRUE] L0034
INC L04
CALL R0075 (L02,#01) -> -(SP)
POP
SUB L05,#01 -> -(SP)
JE L04,(SP)+ [FALSE] L0031
PRINT " and "
L0031: SUB L05,#01 -> -(SP)
JL L04,(SP)+ [FALSE] L0032
PRINT ", "
L0032: GET_SIBLING L02 -> L02 [TRUE] L0033
L0033: JUMP L0030
L0034: JE L01,#02 [TRUE] L0035
PRINT ")"
L0035: RET L06
Routine R0076, 0 locals ()
Action routine for:
"feed CREATURE MULTIHELD"
"feed MULTIHELD to CREATURE"
"feed over MULTIHELD to CREATURE"
CALL R0029 (G17,#19) -> -(SP)
JE (SP)+,#00 [TRUE] L0001
RFALSE
L0001: PRINT_OBJ G17
PRINT_RET " doesn't seem interested.
"
Routine R0077, 1 local (0000)
Action routine for:
"open NOUN with HELD"
"unlock NOUN with HELD"
TEST_ATTR G16,#14 [TRUE] L0001
PRINT_RET "I can't see how to unlock that."
L0001: TEST_ATTR G16,#15 [TRUE] L0002
PRINT_RET "It is in fact unlocked now."
L0002: GET_PROP G16,#16 -> L00
JE L00,G17 [TRUE] L0003
PRINT_RET "That doesn't seem to fit the lock."
L0003: CLEAR_ATTR G16,#15
CALL R0030 -> -(SP)
JE #01,(SP)+ [FALSE] L0004
RTRUE
L0004: PRINT "You unlock the "
PRINT_OBJ G16
PRINT ".
"
RTRUE
Routine R0078, 1 local (0000)
Action routine for:
"lock NOUN with HELD"
TEST_ATTR G16,#14 [TRUE] L0001
PRINT_RET "I can't see how to lock that."
L0001: TEST_ATTR G16,#15 [FALSE] L0002
PRINT_RET "It is in fact locked now."
L0002: TEST_ATTR G16,#0c [FALSE] L0003
PRINT_RET "First you'll have to close it."
L0003: GET_PROP G16,#16 -> L00
JE L00,G17 [TRUE] L0004
PRINT_RET "That doesn't seem to fit the lock."
L0004: SET_ATTR G16,#15
CALL R0030 -> -(SP)
JE #01,(SP)+ [FALSE] L0005
RTRUE
L0005: PRINT "You lock the "
PRINT_OBJ G16
PRINT ".
"
RTRUE
Routine R0079, 0 locals ()
Action routine for:
"rotate NOUN on"
"rotate on NOUN"
"switch NOUN"
"switch NOUN on"
"switch on NOUN"
TEST_ATTR G16,#16 [TRUE] L0001
PRINT_RET "That's not something you can switch."
L0001: TEST_ATTR G16,#17 [FALSE] L0002
PRINT_RET "It's already on."
L0002: SET_ATTR G16,#17
CALL R0030 -> -(SP)
JE #01,(SP)+ [FALSE] L0003
RTRUE
L0003: PRINT "You switch the "
PRINT_OBJ G16
PRINT " on.
"
RTRUE
Routine R0080, 0 locals ()
Action routine for:
"rotate NOUN off"
"rotate off NOUN"
"switch NOUN off"
"switch off NOUN"
TEST_ATTR G16,#16 [TRUE] L0001
PRINT_RET "That's not something you can switch."
L0001: TEST_ATTR G16,#17 [TRUE] L0002
PRINT_RET "It's already off."
L0002: CLEAR_ATTR G16,#17
CALL R0030 -> -(SP)
JE #01,(SP)+ [FALSE] L0003
RTRUE
L0003: PRINT "You switch the "
PRINT_OBJ G16
PRINT " off.
"
RTRUE
Routine R0081, 0 locals ()
Action routine for:
"open NOUN"
TEST_ATTR G16,#0d [TRUE] L0001
PRINT_RET "That's not something you can open."
L0001: TEST_ATTR G16,#15 [FALSE] L0002
PRINT_RET "It seems to be locked."
L0002: TEST_ATTR G16,#0c [FALSE] L0003
PRINT_RET "It's already open."
L0003: SET_ATTR G16,#0c
CALL R0030 -> -(SP)
JE #01,(SP)+ [FALSE] L0004
RTRUE
L0004: PRINT "You open the "
PRINT_OBJ G16
PRINT ".
"
RTRUE
Routine R0082, 0 locals ()
Action routine for:
"close NOUN"
TEST_ATTR G16,#0d [TRUE] L0001
PRINT_RET "That's not something you can close."
L0001: TEST_ATTR G16,#0c [TRUE] L0002
PRINT_RET "It's already closed."
L0002: CLEAR_ATTR G16,#0c
CALL R0030 -> -(SP)
JE #01,(SP)+ [FALSE] L0003
RTRUE
L0003: PRINT "You close the "
PRINT_OBJ G16
PRINT ".
"
RTRUE
Routine R0083, 0 locals ()
Action routine for:
"get off HELD"
"remove HELD"
TEST_ATTR G16,#02 [TRUE] L0001
PRINT_RET "You're not wearing that."
L0001: CLEAR_ATTR G16,#02
CALL R0030 -> -(SP)
JE #01,(SP)+ [FALSE] L0002
RTRUE
L0002: PRINT "You take off the "
PRINT_OBJ G16
PRINT ".
"
RTRUE
Routine R0084, 1 local (0000)
Action routine for:
"wear HELD"
"put on HELD"
TEST_ATTR G16,#03 [TRUE] L0001
PRINT_RET "You can't wear that!"
L0001: GET_PARENT G16 -> L00
JE L00,G08 [TRUE] L0002
PRINT_RET "You're not holding that!"
L0002: TEST_ATTR G16,#02 [FALSE] L0003
PRINT_RET "You're already wearing that!"
L0003: SET_ATTR G16,#02
CALL R0030 -> -(SP)
JE #01,(SP)+ [FALSE] L0004
RTRUE
L0004: PRINT "You put on the "
PRINT_OBJ G16
PRINT ".
"
RTRUE
Routine R0085, 0 locals ()
Action routine for:
"eat HELD"
TEST_ATTR G16,#19 [TRUE] L0001
PRINT_RET "No, it's plainly inedible."
L0001: REMOVE_OBJ G16
CALL R0030 -> -(SP)
JE #01,(SP)+ [FALSE] L0002
RTRUE
L0002: PRINT "You eat the "
PRINT_OBJ G16
PRINT_RET ". Not bad."
Routine R0086, 0 locals ()
Action routine for:
"y"
"no"
PRINT_RET "That was a rhetorical question."
Routine R0087, 0 locals ()
Action routine for:
"burn NOUN"
"burn NOUN with HELD"
PRINT_RET "In this game, arson is (usually) forbidden."
Routine R0088, 0 locals ()
Action routine for:
"pray"
PRINT_RET "Spooky! For a moment there, a deep voice seemed
to say "you're on your own"."
Routine R0089, 0 locals ()
Action routine for:
"awake"
"awake up"
PRINT_RET "The dreadful truth is, this is not a dream."
Routine R0090, 0 locals ()
Action routine for:
"awake CREATURE"
"awake up CREATURE"
PRINT_RET "That seems unnecessary."
Routine R0091, 0 locals ()
Action routine for:
"embrac CREATURE"
CALL R0029 (G16,#42) -> -(SP)
JE (SP)+,#00 [TRUE] L0001
RFALSE
L0001: PRINT_RET "Keep your mind on the game."
Routine R0092, 0 locals ()
Action routine for:
"think"
PRINT_RET "What a good idea."
Routine R0093, 0 locals ()
Action routine for:
"smell"
"smell NOUN"
PRINT_RET "You smell nothing unexpected."
Routine R0094, 0 locals ()
Action routine for:
"hear"
"hear NOUN"
"hear to NOUN"
PRINT_RET "You hear nothing unexpected."
Routine R0095, 0 locals ()
Action routine for:
"taste"
PRINT_RET "You taste nothing unexpected."
Routine R0096, 0 locals ()
Action routine for:
"feel"
PRINT_RET "You feel nothing unexpected."
Routine R0097, 0 locals ()
Action routine for:
"feel NOUN"
TEST_ATTR G16,#04 [FALSE] L0001
PRINT_RET "Keep your hands to yourself!"
L0001: PRINT_RET "You feel nothing unexpected."
Routine R0098, 0 locals ()
PRINT_RET "The ground is unsuitable for digging here."
Routine R0099, 0 locals ()
Action routine for:
"chop NOUN"
PRINT_RET "In this game, cutting things up is never helpful."
Routine R0100, 0 locals ()
Action routine for:
"hop"
PRINT_RET "You jump on the spot, fruitlessly."
Routine R0101, 0 locals ()
Action routine for:
"hop over NOUN"
PRINT_RET "In this game, it is never useful to jump over things."
Routine R0102, 0 locals ()
Action routine for:
"attach NOUN"
"attach NOUN to SPECIAL"
PRINT_RET "In this game, it is never useful to tie things."
Routine R0103, 0 locals ()
Action routine for:
"drink water"
"drink NOUN"
PRINT_RET "There's nothing suitable to drink here."
Routine R0104, 0 locals ()
Action routine for:
"fill NOUN"
PRINT_RET "But there's no water here to carry."
Routine R0105, 0 locals ()
Action routine for:
"sorry"
PRINT_RET "Oh, don't apologise."
Routine R0106, 0 locals ()
Action routine for:
"damn"
"damn SPECIAL"
PRINT_RET "Disgraceful! Once upon a time adventurers had moral
standards."
Routine R0107, 0 locals ()
Action routine for:
"bother"
"bother SPECIAL"
PRINT_RET "Quite."
Routine R0108, 0 locals ()
Action routine for:
"attack NOUN"
TEST_ATTR G16,#04 [FALSE] L0001
CALL R0029 (G16,#32) -> -(SP)
JE (SP)+,#00 [TRUE] L0001
RFALSE
L0001: PRINT_RET "Violence isn't the answer, you know."
Routine R0109, 0 locals ()
Action routine for:
"dive"
PRINT_RET "There's not enough water to swim in."
Routine R0110, 0 locals ()
Action routine for:
"swing NOUN"
"swing on NOUN"
PRINT_RET "There's nothing sensible to swing here."
Routine R0111, 0 locals ()
Action routine for:
"blow HELD"
PRINT_RET "You can't usefully blow that."
Routine R0112, 0 locals ()
Action routine for:
"polish NOUN"
PRINT_RET "You achieve nothing by this."
Routine R0113, 0 locals ()
Action routine for:
"set NOUN"
PRINT_RET "No, you can't set that."
Routine R0114, 0 locals ()
Action routine for:
"wave"
PRINT_RET "You wave, feeling foolish."
Routine R0115, 1 local (0000)
Action routine for:
"wave NOUN"
GET_PARENT G16 -> L00
JE L00,G08 [TRUE] L0001
PRINT_RET "But you aren't holding it."
L0001: PRINT "You look ridiculous waving the "
PRINT_OBJ G16
PRINT_RET "."
Routine R0116, 0 locals ()
Action routine for:
"drag NOUN"
TEST_ATTR G16,#11 [FALSE] L0001
PRINT_RET "It is fixed in place."
L0001: TEST_ATTR G16,#10 [FALSE] L0002
PRINT_RET "You are unable to."
L0002: PRINT_RET "Nothing obvious happens."
Routine R0117, 0 locals ()
Action routine for:
"clear NOUN"
TEST_ATTR G16,#11 [FALSE] L0001
PRINT_RET "It is fixed in place."
L0001: TEST_ATTR G16,#10 [FALSE] L0002
PRINT_RET "You are unable to."
L0002: PRINT_RET "Nothing obvious happens."
Routine R0118, 1 local (0000)
GET_PARENT G17 -> L00
JE L00,#01 [TRUE] L0001
PRINT_RET "That's not a direction."
L0001: JE G17,#0a,#0b [FALSE] L0002
PRINT_RET "Not that way you can't."
L0002: CALL R0030 -> -(SP)
POP
STORE L00,G16
STORE G16,G17
CALL R0028 (G16,G17,#1b) -> -(SP)
POP
REMOVE_OBJ L00
INSERT_OBJ L00,G00
RTRUE
Routine R0119, 0 locals ()
Action routine for:
"clear NOUN NOUN"
PRINT_RET "Is that the best you can think of?"
Routine R0120, 0 locals ()
Action routine for:
"rotate NOUN"
TEST_ATTR G16,#11 [FALSE] L0001
PRINT_RET "It is fixed in place."
L0001: TEST_ATTR G16,#10 [FALSE] L0002
PRINT_RET "You are unable to."
L0002: PRINT_RET "Nothing obvious happens."
Routine R0121, 0 locals ()
Action routine for:
"squash NOUN"
TEST_ATTR G16,#04 [FALSE] L0001
PRINT_RET "Keep your hands to yourself."
L0001: PRINT_RET "You achieve nothing by this."
Routine R0122, 0 locals ()
Action routine for:
"l under NOUN"
PRINT_RET "You find nothing of interest."
Routine R0123, 0 locals ()
Action routine for:
"l inside NOUN"
"l in NOUN"
"l throug NOUN"
"search NOUN"
TEST_ATTR G16,#09 [TRUE] L0001
PRINT_RET "You find nothing of interest."
L0001: TEST_ATTR G16,#0b [FALSE] L0002
TEST_ATTR G16,#0c [TRUE] L0002
PRINT_RET "You can't see inside, since it is closed."
L0002: CALL R0030 -> -(SP)
JE #01,(SP)+ [FALSE] L0003
RTRUE
L0003: PRINT "You peer at "
CALL R0075 (G16,#02) -> -(SP)
POP
PRINT_RET "."
Routine R0124, 0 locals ()
Action routine for:
"discar HELD at NOUN"
"discar HELD agains NOUN"
TEST_ATTR G17,#04 [TRUE] L0001
PRINT_RET "Futile."
L0001: CALL R0029 (G17,#18) -> -(SP)
JE (SP)+,#00 [TRUE] L0002
RFALSE
L0002: PRINT_RET "You lack the nerve when it comes to the crucial
moment."
Routine R0125, 0 locals ()
Action routine for:
"answer SPECIAL to CREATURE"
CALL R0029 (G17,#34) -> -(SP)
JE (SP)+,#00 [TRUE] L0001
RFALSE
L0001: PRINT_RET "No reply."
Routine R0126, 0 locals ()
Action routine for:
"buy SPECIAL"
PRINT_RET "Nothing is on sale."
Routine R0127, 0 locals ()
Action routine for:
"ask CREATURE about SPECIAL"
CALL R0029 (G16,#35) -> -(SP)
JE (SP)+,#00 [TRUE] L0001
RFALSE
L0001: PRINT_RET "No reply."
Routine R0128, 0 locals ()
Action routine for:
"sing"
RANDOM #02 -> -(SP)
JE (SP)+,#01 [FALSE] L0001
PRINT "Your yodelling "
JUMP L0002
L0001: PRINT "Your singing "
L0002: PRINT_RET "is atrocious, if you say so yourself."
Routine R0129, 0 locals ()
Action routine for:
"climb NOUN"
PRINT_RET "I don't think much is to be achieved by that."
Routine R0130, 0 locals ()
Action routine for:
"wait"
CALL R0031 -> -(SP)
JE #01,(SP)+ [FALSE] L0001
RTRUE
L0001: PRINT_RET "Time passes."
Routine R0131, 0 locals ()
Action routine for:
"nap"
PRINT_RET "You must have slept yourself out. You certainly aren't
drowsy now."
Routine R0132, 0 locals ()
STORE G00,#0e
PRINT "
Welcome to the shell...
"
RTRUE
Routine R0133, 0 locals ()
PRINT ", earning you the rank of "
PRINT_RET "vacancy."
Routine R0134, 0 locals ()
RFALSE
Routine R0135, 0 locals ()
RFALSE
Routine R0136, 0 locals ()
RFALSE
Routine R0137, 0 locals ()
RFALSE
Routine R0138, 0 locals ()
RFALSE
Routine R0139, 0 locals ()
RFALSE
Routine R0140, 0 locals ()
RFALSE
Routine R0141, 0 locals ()
RFALSE
Routine R0142, 1 local (0000)
STORE L00,#00
RFALSE
[End of code]
[Start of text]
S001: "SHELL"
S002: "
An Interactive Skeleton
Copyright (c) 1993 by (your name here).
"
S003: "a"
S004: "You can't go that way."
S005: "the"
S006: "the"
S007: "the"
S008: "the"
S009: "the"
S010: "the"
S011: "the"
S012: "the"
S013: "the"
S014: "the"
S015: "It is pitch dark, and you can't see a thing."
S016: "the"
S017: "An empty room."
[End of text]
[End of file]