mirror of
https://github.com/historicalsource/minizork2-1988
synced 2024-04-25 13:39:44 +03:00
463 lines
11 KiB
Plaintext
463 lines
11 KiB
Plaintext
|
|
|
|
.FUNCT BALLOON-F,RARG=0,M,R,RC
|
|
EQUAL? RARG,M-LOOK \?CCL3
|
|
ZERO? BALLOON-INFLATED /?PRG18
|
|
PRINTI "The cloth bag is inflated and "
|
|
FSET? RECEPTACLE,OPENBIT \?PRG14
|
|
PRINTI "a "
|
|
PRINTD BALLOON-INFLATED
|
|
PRINTI " is burning in the"
|
|
JUMP ?PRG16
|
|
?PRG14: PRINTI "smoke leaks out of the closed"
|
|
?PRG16: PRINTI " receptacle."
|
|
JUMP ?CND4
|
|
?PRG18: PRINTI "The cloth bag is draped over the side of the basket. In the middle of the basket is a metal receptacle which is "
|
|
FSET? RECEPTACLE,OPENBIT \?PRG39
|
|
PRINTI "open"
|
|
FIRST? RECEPTACLE >RC /?BOGUS25
|
|
?BOGUS25: ZERO? RC /?PRG41
|
|
PRINTI ". A "
|
|
PRINTD RC
|
|
PRINTI " is "
|
|
EQUAL? BALLOON-INFLATED,RC \?PRG35
|
|
PRINTI "burning"
|
|
JUMP ?PRG37
|
|
?PRG35: PRINTI "nestled"
|
|
?PRG37: PRINTI " inside"
|
|
JUMP ?PRG41
|
|
?PRG39: PRINTI "closed"
|
|
?PRG41: PRINTI ". A braided wire "
|
|
?CND4: ZERO? BALLOON-TIED /?PRG48
|
|
PRINTI "connects the balloon to the hook."
|
|
JUMP ?PRG50
|
|
?PRG48: PRINTI "dangles from the basket."
|
|
?PRG50: PRINT PERIOD-CR
|
|
RTRUE
|
|
?CCL3: EQUAL? RARG,M-OBJDESC \?CCL53
|
|
PRINTI "There is a large heavy wicker basket here. A huge cloth bag is attached to the basket and "
|
|
ZERO? BALLOON-INFLATED /?PRG61
|
|
PRINTI "inflated"
|
|
JUMP ?PRG63
|
|
?PRG61: PRINTI "and draped over the side"
|
|
?PRG63: PRINTI ". A metal receptacle is fastened to the center of the basket"
|
|
ZERO? BALLOON-INFLATED /?PRG74
|
|
FSET? RECEPTACLE,OPENBIT \?PRG72
|
|
PRINTI ". In it is a burning "
|
|
PRINTD BALLOON-INFLATED
|
|
JUMP ?PRG74
|
|
?PRG72: PRINTI ". Smoke leaks from its closed lid"
|
|
?PRG74: PRINTI ". A piece of braided wire "
|
|
ZERO? BALLOON-TIED /?PRG81
|
|
PRINTR "tied to the hook holds the balloon in place."
|
|
?PRG81: PRINTR "dangles from the basket."
|
|
?CCL53: EQUAL? RARG,M-BEG \FALSE
|
|
EQUAL? PRSA,V?WALK \?CCL87
|
|
GETPT HERE,PRSO >M
|
|
ZERO? M /?PRG98
|
|
ZERO? BALLOON-TIED /?CCL93
|
|
PRINTR "You are tied to the ledge."
|
|
?CCL93: PTSIZE M
|
|
EQUAL? STACK,1 \?PEN96
|
|
SET 'BALLOON-LOC,R
|
|
?PEN96: CALL QUEUE,I-BALLOON,3
|
|
PUT STACK,0,1
|
|
RFALSE
|
|
?PRG98: PRINTR "You can't control the balloon this way."
|
|
?CCL87: EQUAL? PRSA,V?OPEN \?CCL101
|
|
ZERO? BALLOON-INFLATED /?CCL101
|
|
EQUAL? PRSO,RECEPTACLE \?CCL101
|
|
FIRST? RECEPTACLE \?CCL101
|
|
FSET RECEPTACLE,OPENBIT
|
|
PRINTI "Opening it reveals a burning "
|
|
PRINTD BALLOON-INFLATED
|
|
PRINT PERIOD-CR
|
|
RTRUE
|
|
?CCL101: EQUAL? PRSA,V?TAKE \?CCL109
|
|
EQUAL? BALLOON-INFLATED,PRSO \?CCL109
|
|
PRINTI "You don't really want to hold a burning "
|
|
PRINTD PRSO
|
|
PRINT PERIOD-CR
|
|
RTRUE
|
|
?CCL109: EQUAL? PRSA,V?PUT \?CCL115
|
|
EQUAL? PRSI,RECEPTACLE \?CCL115
|
|
FIRST? RECEPTACLE \?CCL115
|
|
PRINTR "The receptacle is already occupied."
|
|
?CCL115: EQUAL? PRSA,V?PUT \?CCL122
|
|
EQUAL? PRSI,RECEPTACLE \?CCL122
|
|
FSET PRSO,NDESCBIT
|
|
RFALSE
|
|
?CCL122: EQUAL? PRSA,V?INFLATE \FALSE
|
|
PRINTR "It takes more than words to inflate a balloon."
|
|
|
|
|
|
.FUNCT I-BALLOON
|
|
FSET? RECEPTACLE,OPENBIT \?CCL3
|
|
ZERO? BALLOON-INFLATED /?CCL3
|
|
CALL RISE-AND-SHINE
|
|
RSTACK
|
|
?CCL3: EQUAL? HERE,NARROW-LEDGE,WIDE-LEDGE \?CCL7
|
|
CALL RISE-AND-SHINE
|
|
RSTACK
|
|
?CCL7: CALL DECLINE-AND-FALL
|
|
RSTACK
|
|
|
|
|
|
.FUNCT BALLOON-BURN
|
|
PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTI " burns inside the receptacle."
|
|
CRLF
|
|
GETP PRSO,P?SIZE
|
|
MUL STACK,20
|
|
CALL QUEUE,I-BURNUP,STACK
|
|
PUT STACK,0,1
|
|
FSET PRSO,FLAMEBIT
|
|
FSET PRSO,ONBIT
|
|
FCLEAR PRSO,TAKEBIT
|
|
FCLEAR PRSO,READBIT
|
|
ZERO? BALLOON-INFLATED \TRUE
|
|
PRINTI "The cloth bag inflates as it fills with hot air."
|
|
CRLF
|
|
ZERO? LABEL-REVEALED \?CND8
|
|
MOVE BALLOON-LABEL,BALLOON
|
|
PRINTI "A label drops from the bag into the basket."
|
|
CRLF
|
|
?CND8: SET 'LABEL-REVEALED,TRUE-VALUE
|
|
SET 'BALLOON-INFLATED,PRSO
|
|
CALL QUEUE,I-BALLOON,3
|
|
PUT STACK,0,1
|
|
RTRUE
|
|
|
|
|
|
.FUNCT PUT-BALLOON,THERE,STR
|
|
EQUAL? HERE,NARROW-LEDGE,WIDE-LEDGE,VOLCANO-BOTTOM \?CND1
|
|
PRINTI "You watch as the balloon slowly "
|
|
PRINT STR
|
|
CRLF
|
|
?CND1: MOVE BALLOON,THERE
|
|
SET 'BALLOON-LOC,THERE
|
|
RETURN BALLOON-LOC
|
|
|
|
|
|
.FUNCT RISE-AND-SHINE,IN,R
|
|
IN? WINNER,BALLOON /?PRD1
|
|
PUSH 0
|
|
JUMP ?PRD2
|
|
?PRD1: PUSH 1
|
|
?PRD2: SET 'IN,STACK
|
|
CALL QUEUE,I-BALLOON,3
|
|
PUT STACK,0,1
|
|
EQUAL? BALLOON-LOC,VOLCANO-BY-WIDE-LEDGE \?CCL5
|
|
CALL INT,I-BURNUP
|
|
PUT STACK,0,0
|
|
CALL INT,I-BALLOON
|
|
PUT STACK,0,0
|
|
REMOVE BALLOON
|
|
ZERO? IN /?CCL8
|
|
CALL JIGS-UP,STR?196
|
|
JUMP ?CND6
|
|
?CCL8: EQUAL? HERE,NARROW-LEDGE,WIDE-LEDGE,VOLCANO-BOTTOM \?CND6
|
|
PRINTI "You watch the balloon drift over the rim and away on the wind."
|
|
CRLF
|
|
?CND6: SET 'BALLOON-LOC,VOLCANO-BOTTOM
|
|
RETURN BALLOON-LOC
|
|
?CCL5: CALL LKP,BALLOON-LOC,BALLOON-UPS >R
|
|
ZERO? R /?CCL13
|
|
ZERO? IN /?CCL16
|
|
PRINTI "The balloon ascends."
|
|
CRLF
|
|
CRLF
|
|
SET 'BALLOON-LOC,R
|
|
CALL GOTO,R
|
|
RSTACK
|
|
?CCL16: CALL PUT-BALLOON,R,STR?197
|
|
RSTACK
|
|
?CCL13: CALL LKP,BALLOON-LOC,BALLOON-FLOATS >R
|
|
ZERO? R /?CCL20
|
|
ZERO? IN /?CCL23
|
|
PRINTI "The balloon leaves the ledge."
|
|
CRLF
|
|
CRLF
|
|
SET 'BALLOON-LOC,R
|
|
CALL GOTO,R
|
|
RSTACK
|
|
?CCL23: CALL PUT-BALLOON,R,STR?198
|
|
FSET RECEPTACLE,OPENBIT
|
|
RTRUE
|
|
?CCL20: ZERO? IN /?CCL27
|
|
SET 'BALLOON-LOC,VOLCANO-CORE
|
|
PRINTI "The balloon rises slowly from the ground."
|
|
CRLF
|
|
CRLF
|
|
CALL GOTO,VOLCANO-CORE
|
|
RSTACK
|
|
?CCL27: CALL PUT-BALLOON,VOLCANO-CORE,STR?199
|
|
RSTACK
|
|
|
|
|
|
.FUNCT DECLINE-AND-FALL,IN,R
|
|
IN? WINNER,BALLOON /?PRD1
|
|
PUSH 0
|
|
JUMP ?PRD2
|
|
?PRD1: PUSH 1
|
|
?PRD2: SET 'IN,STACK
|
|
CALL QUEUE,I-BALLOON,3
|
|
PUT STACK,0,1
|
|
EQUAL? BALLOON-LOC,VOLCANO-CORE \?CCL5
|
|
ZERO? IN /?CCL8
|
|
SET 'BALLOON-LOC,VOLCANO-BOTTOM
|
|
ZERO? BALLOON-INFLATED /?CCL11
|
|
PRINTI "The balloon has landed."
|
|
CRLF
|
|
CRLF
|
|
CALL GOTO,VOLCANO-BOTTOM
|
|
RSTACK
|
|
?CCL11: REMOVE BALLOON
|
|
MOVE ADVENTURER,HERE
|
|
CALL INT,I-BALLOON
|
|
PUT STACK,0,0
|
|
PRINTI "The balloon smashes into dust against the volcano floor. You, miraculously, survive."
|
|
CRLF
|
|
CRLF
|
|
CALL GOTO,VOLCANO-BOTTOM
|
|
RSTACK
|
|
?CCL8: CALL PUT-BALLOON,VOLCANO-BOTTOM,STR?200
|
|
RSTACK
|
|
?CCL5: CALL LKP,BALLOON-LOC,BALLOON-DOWNS >R
|
|
ZERO? R /FALSE
|
|
ZERO? IN /?CCL20
|
|
PRINTI "The balloon descends."
|
|
CRLF
|
|
CRLF
|
|
SET 'BALLOON-LOC,R
|
|
CALL GOTO,R
|
|
RSTACK
|
|
?CCL20: CALL PUT-BALLOON,R,STR?201
|
|
RSTACK
|
|
|
|
|
|
.FUNCT LKP,ITM,TBL,CNT=0,LEN
|
|
GET TBL,0 >LEN
|
|
?PRG1: IGRTR? 'CNT,LEN /FALSE
|
|
GET TBL,CNT
|
|
EQUAL? STACK,ITM \?PRG1
|
|
EQUAL? CNT,LEN /FALSE
|
|
ADD CNT,1
|
|
GET TBL,STACK
|
|
RSTACK
|
|
|
|
|
|
.FUNCT I-BURNUP,OBJ
|
|
FIRST? RECEPTACLE >OBJ /?BOGUS1
|
|
?BOGUS1: EQUAL? HERE,BALLOON-LOC \?CND2
|
|
PRINTI "The "
|
|
PRINTD OBJ
|
|
PRINTI " has now burned out, and the cloth bag starts to deflate."
|
|
CRLF
|
|
?CND2: REMOVE OBJ
|
|
SET 'BALLOON-INFLATED,FALSE-VALUE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT BRAIDED-WIRE-F
|
|
EQUAL? PRSA,V?EXAMINE,V?FIND,V?TAKE \?CCL3
|
|
CALL BCONTENTS
|
|
RSTACK
|
|
?CCL3: EQUAL? PRSA,V?TIE \?CCL5
|
|
EQUAL? PRSO,BRAIDED-WIRE \?CCL5
|
|
EQUAL? PRSI,HOOK \?CCL5
|
|
SET 'BALLOON-TIED,PRSI
|
|
CALL INT,I-BALLOON
|
|
PUT STACK,0,0
|
|
PRINTR "The balloon is fastened to the hook."
|
|
?CCL5: EQUAL? PRSA,V?UNTIE \FALSE
|
|
EQUAL? PRSO,BRAIDED-WIRE \FALSE
|
|
PRINTI "The wire is no"
|
|
ZERO? BALLOON-TIED /?PRG22
|
|
CALL QUEUE,I-BALLOON,3
|
|
PUT STACK,0,1
|
|
SET 'BALLOON-TIED,FALSE-VALUE
|
|
PRINTR "w unhooked."
|
|
?PRG22: PRINTR "t tied to anything."
|
|
|
|
|
|
.FUNCT BCONTENTS
|
|
EQUAL? PRSA,V?TAKE \?CCL3
|
|
PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTI " is an integral part of the basket and cannot be removed."
|
|
EQUAL? PRSO,BRAIDED-WIRE \?CND6
|
|
PRINTR " It might be tied, though."
|
|
?CND6: CRLF
|
|
RTRUE
|
|
?CCL3: EQUAL? PRSA,V?OPEN \?CCL11
|
|
PRINTR "The bag is enormous. You can't open it by hand."
|
|
?CCL11: EQUAL? PRSA,V?LOOK-INSIDE \?CCL15
|
|
PRINTR "It seems empty."
|
|
?CCL15: EQUAL? PRSA,V?EXAMINE \?CCL19
|
|
EQUAL? PRSO,RECEPTACLE \?CCL19
|
|
PRINTI "The receptacle is "
|
|
FSET? PRSO,OPENBIT \?PRG29
|
|
PRINTR "open."
|
|
?PRG29: PRINTR "closed."
|
|
?CCL19: EQUAL? PRSA,V?EXAMINE,V?FIND \FALSE
|
|
PRINTI "The "
|
|
PRINTD PRSO
|
|
PRINTR " is part of the basket. It may be manipulated within the basket but cannot be removed."
|
|
|
|
|
|
.FUNCT VOLCANO-BY-LEDGE-F,RARG
|
|
EQUAL? RARG,M-LOOK \FALSE
|
|
PRINTI "You are about "
|
|
EQUAL? HERE,VOLCANO-BY-SMALL-LEDGE \?PRG11
|
|
PRINTI "15"
|
|
JUMP ?PRG13
|
|
?PRG11: PRINTI "20"
|
|
?PRG13: PRINTI "0 feet up, "
|
|
EQUAL? HERE,VOLCANO-BY-WIDE-LEDGE \?PRG19
|
|
PRINTI "very "
|
|
?PRG19: PRINTI "near the rim of the volcano. To the "
|
|
EQUAL? HERE,VOLCANO-BY-SMALL-LEDGE \?PRG26
|
|
PRINTI "east is a narrow"
|
|
JUMP ?PRG28
|
|
?PRG26: PRINTI "west is a wide"
|
|
?PRG28: PRINTR "ledge."
|
|
|
|
|
|
.FUNCT RANDOM-BOOK-F
|
|
EQUAL? PRSA,V?PUT,V?MOVE,V?TAKE \FALSE
|
|
FSET WHITE-BOOK,TOUCHBIT
|
|
FSET PURPLE-BOOK,TOUCHBIT
|
|
FSET BLUE-BOOK,TOUCHBIT
|
|
RFALSE
|
|
|
|
|
|
.FUNCT PURPLE-BOOK-F
|
|
EQUAL? PRSA,V?READ \?CCL3
|
|
IN? STAMP,PURPLE-BOOK \?CCL3
|
|
FSET? PURPLE-BOOK,OPENBIT /?CCL3
|
|
GETP PURPLE-BOOK,P?TEXT
|
|
PRINT STACK
|
|
CRLF
|
|
CALL PERFORM,V?OPEN,PURPLE-BOOK
|
|
RTRUE
|
|
?CCL3: CALL RANDOM-BOOK-F
|
|
RSTACK
|
|
|
|
|
|
.FUNCT LEDGE-F,RARG
|
|
EQUAL? RARG,M-LOOK \FALSE
|
|
PRINTI "You are on a "
|
|
EQUAL? HERE,NARROW-LEDGE \?PRG11
|
|
PRINTI "small"
|
|
JUMP ?PRG13
|
|
?PRG11: PRINTI "large"
|
|
?PRG13: PRINTI " ledge high in the volcano. There is a small opening to the south"
|
|
ZERO? DUSTY-ROOM-COLLAPSED /?PRG21
|
|
EQUAL? HERE,WIDE-LEDGE \?PRG21
|
|
PRINTI " which is blocked by rubble"
|
|
?PRG21: PRINTR ". Imbedded in the rock is a small hook."
|
|
|
|
|
|
.FUNCT DUSTY-ROOM-F,RARG
|
|
EQUAL? RARG,M-LOOK \FALSE
|
|
PRINTI "You are in a featureless room with an exit on the north side. Imbedded in the far wall is a rusty box"
|
|
FSET? SAFE,OPENBIT /?PRG11
|
|
PRINTI ". An oblong hole has been chipped out of the front of it"
|
|
JUMP ?PRG13
|
|
?PRG11: PRINTI " whose door has been blown off"
|
|
?PRG13: PRINT PERIOD-CR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT SAFE-F
|
|
EQUAL? PRSA,V?TAKE \?CCL3
|
|
EQUAL? PRSO,SAFE \?CCL3
|
|
PRINTR "The box is imbedded in the wall."
|
|
?CCL3: EQUAL? PRSA,V?CLOSE,V?OPEN \?CCL9
|
|
FSET? SAFE,OPENBIT \?CCL9
|
|
PRINTR "The box has no door!"
|
|
?CCL9: EQUAL? PRSA,V?OPEN \?CCL15
|
|
PRINTR "The box is rusted shut."
|
|
?CCL15: EQUAL? PRSA,V?CLOSE \FALSE
|
|
PRINTR "The box isn't open!"
|
|
|
|
|
|
.FUNCT SAFE-HOLE-F
|
|
EQUAL? PRSA,V?EXAMINE \FALSE
|
|
PRINTR "The hole was someone's failed attempt to chip their way into the box."
|
|
|
|
|
|
.FUNCT BRICK-F
|
|
EQUAL? PRSA,V?BURN \FALSE
|
|
REMOVE BRICK
|
|
CALL JIGS-UP,OTHER-PROPERTIES
|
|
RSTACK
|
|
|
|
|
|
.FUNCT FUSE-F
|
|
EQUAL? PRSA,V?BURN /?PRG9
|
|
EQUAL? PRSA,V?LAMP-ON \FALSE
|
|
IN? MATCH,WINNER \FALSE
|
|
FSET? MATCH,ONBIT \FALSE
|
|
?PRG9: PRINTI "The string starts to burn."
|
|
CRLF
|
|
CALL QUEUE,I-FUSE,2
|
|
PUT STACK,0,1
|
|
RTRUE
|
|
|
|
|
|
.FUNCT I-FUSE,BRICK-ROOM,F
|
|
LOC BRICK >BRICK-ROOM
|
|
IN? FUSE,BRICK \?CCL3
|
|
?PRG4: ZERO? BRICK-ROOM /FALSE
|
|
IN? BRICK-ROOM,ROOMS /?REP5
|
|
LOC BRICK-ROOM >BRICK-ROOM
|
|
JUMP ?PRG4
|
|
?REP5: MOVE EXPLOSION,BRICK-ROOM
|
|
FCLEAR BRICK-ROOM,TOUCHBIT
|
|
EQUAL? BRICK-ROOM,HERE \?CCL13
|
|
CALL JIGS-UP,OTHER-PROPERTIES
|
|
JUMP ?CND11
|
|
?CCL13: IN? BRICK,SAFE-HOLE \?PRG16
|
|
FSET SAFE-HOLE,INVISIBLE
|
|
FSET SAFE,OPENBIT
|
|
FCLEAR DUSTY-ROOM,TOUCHBIT
|
|
CALL QUEUE,I-SAFE,5
|
|
PUT STACK,0,1
|
|
?PRG16: PRINTI "There is an explosion nearby."
|
|
CRLF
|
|
FIRST? BRICK-ROOM >F \?CND11
|
|
?PRG20: FSET? F,TAKEBIT \?CND22
|
|
FSET F,INVISIBLE
|
|
?CND22: NEXT? F >F /?PRG20
|
|
?CND11: REMOVE BRICK
|
|
JUMP ?CND1
|
|
?CCL3: LOC FUSE
|
|
EQUAL? STACK,WINNER,HERE \?CND1
|
|
PRINTI "The string burns into nothingness."
|
|
CRLF
|
|
?CND1: REMOVE FUSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT BOMB?,O
|
|
EQUAL? O,BRICK \FALSE
|
|
IN? FUSE,BRICK \FALSE
|
|
CALL INT,I-FUSE
|
|
GET STACK,C-ENABLED?
|
|
ZERO? STACK /FALSE
|
|
RTRUE
|
|
|
|
|
|
.FUNCT I-SAFE
|
|
SET 'DUSTY-ROOM-COLLAPSED,TRUE-VALUE
|
|
EQUAL? HERE,DUSTY-ROOM \?CCL3
|
|
CALL JIGS-UP,STR?223
|
|
RSTACK
|
|
?CCL3: ZERO? DEAD \FALSE
|
|
PRINTR "Probably as a result of that recent explosion, an ominous rumbling indicates that a nearby room has collapsed."
|
|
|
|
.ENDI
|