From 689e06b55fd9d2f450944fb65af6d746e43b96f6 Mon Sep 17 00:00:00 2001 From: historicalsource Date: Sun, 14 Apr 2019 16:35:30 -0400 Subject: [PATCH] Final Revision --- README.md | 1 + astrix.zabstr | 70 + astrix.zap | 281 ++ astrix.zil | 326 ++ characters.zabstr | 105 + characters.zap | 209 ++ characters.zil | 319 ++ combat.zabstr | 64 + combat.zap | 310 ++ combat.zil | 336 ++ commands.zabstr | 305 ++ commands.zap | 663 ++++ commands.zil | 775 +++++ common.zabstr | 43 + common.zap | 391 +++ common.zil | 403 +++ controls.zabstr | 17 + controls.zap | 39 + controls.zil | 53 + dwarves.zabstr | 370 +++ dwarves.zap | 626 ++++ dwarves.zil | 767 +++++ flume.zabstr | 470 +++ flume.zap | 728 ++++ flume.zil | 924 ++++++ fog.zabstr | 710 ++++ fog.zap | 1231 +++++++ fog.zil | 1569 +++++++++ forest.zabstr | 974 ++++++ forest.zap | 1787 ++++++++++ forest.zil | 2196 +++++++++++++ graphics.zil | 206 ++ hermit.zabstr | 148 + hermit.zap | 187 ++ hermit.zil | 257 ++ hints.zabstr | 510 +++ hints.zap | 548 ++++ hints.zil | 1104 +++++++ input.zabstr | 192 ++ input.zap | 2139 ++++++++++++ input.zil | 1980 +++++++++++ intro.zabstr | 15 + intro.zap | 151 + intro.zil | 163 + island.zabstr | 5 + island.zap | 96 + island.zil | 120 + journey-glue | 2 + journey-nsplit | 2 + journey-split | 272 ++ journey-taa | 2 + journey.aplit | 263 ++ journey.bwmac.1 | Bin 0 -> 473730 bytes journey.chart | 48 + journey.d1 | Bin 0 -> 55296 bytes journey.d2 | Bin 0 -> 124928 bytes journey.d3 | Bin 0 -> 136192 bytes journey.d4 | Bin 0 -> 137216 bytes journey.d5 | Bin 0 -> 128000 bytes journey.errors | 52 + journey.lowcore | 2 + journey.nsplit | 258 ++ journey.record | 505 +++ journey.seg | Bin 0 -> 2874 bytes journey.seginfo | 6177 ++++++++++++++++++++++++++++++++++ journey.split | 273 ++ journey.syms | Bin 0 -> 207646 bytes journey.zap | 105 + journey.zil | 194 ++ journey.zip | Bin 0 -> 282624 bytes journeydat.zap | 8036 +++++++++++++++++++++++++++++++++++++++++++++ journeyfreq.zap | 198 ++ journeypur.zap | 1858 +++++++++++ journeystr.zap | 1022 ++++++ lake.zabstr | 650 ++++ lake.zap | 1127 +++++++ lake.zil | 1379 ++++++++ lavos.zabstr | 605 ++++ lavos.zap | 891 +++++ lavos.zil | 1174 +++++++ mines.zabstr | 441 +++ mines.zap | 619 ++++ mines.zil | 817 +++++ mudsub | Bin 0 -> 50004 bytes objects.zabstr | 195 ++ objects.zap | 278 ++ objects.zil | 373 +++ ojourney.seg | Bin 0 -> 2874 bytes ojourney.zip | Bin 0 -> 281600 bytes output.zabstr | 83 + output.zap | 366 +++ output.zil | 429 +++ part2.zabstr | 133 + part2.zap | 217 ++ part2.zil | 295 ++ pool.save | Bin 0 -> 16117 bytes powder.save | Bin 0 -> 16117 bytes prison.zabstr | 289 ++ prison.zap | 438 +++ prison.zil | 547 +++ river.zabstr | 142 + river.zap | 530 +++ river.zil | 568 ++++ segment.info | 206 ++ spells.zabstr | 406 +++ spells.zap | 1045 ++++++ spells.zil | 1381 ++++++++ stair.zabstr | 291 ++ stair.zap | 437 +++ stair.zil | 550 ++++ tales.zabstr | 239 ++ tales.zap | 275 ++ tales.zil | 405 +++ test.save | Bin 0 -> 16117 bytes tomb.zabstr | 261 ++ tomb.zap | 436 +++ tomb.zil | 477 +++ trap.zabstr | 245 ++ trap.zap | 533 +++ trap.zil | 559 ++++ voyage.zabstr | 246 ++ voyage.zap | 421 +++ voyage.zil | 539 +++ wharf.zabstr | 230 ++ wharf.zap | 419 +++ wharf.zil | 483 +++ windows.zil | 43 + zan.zabstr | 968 ++++++ zan.zap | 1402 ++++++++ zan.zil | 1773 ++++++++++ 130 files changed, 71008 insertions(+) create mode 100644 README.md create mode 100644 astrix.zabstr create mode 100644 astrix.zap create mode 100644 astrix.zil create mode 100644 characters.zabstr create mode 100644 characters.zap create mode 100644 characters.zil create mode 100644 combat.zabstr create mode 100644 combat.zap create mode 100644 combat.zil create mode 100644 commands.zabstr create mode 100644 commands.zap create mode 100644 commands.zil create mode 100644 common.zabstr create mode 100644 common.zap create mode 100644 common.zil create mode 100644 controls.zabstr create mode 100644 controls.zap create mode 100644 controls.zil create mode 100644 dwarves.zabstr create mode 100644 dwarves.zap create mode 100644 dwarves.zil create mode 100644 flume.zabstr create mode 100644 flume.zap create mode 100644 flume.zil create mode 100644 fog.zabstr create mode 100644 fog.zap create mode 100644 fog.zil create mode 100644 forest.zabstr create mode 100644 forest.zap create mode 100644 forest.zil create mode 100644 graphics.zil create mode 100644 hermit.zabstr create mode 100644 hermit.zap create mode 100644 hermit.zil create mode 100644 hints.zabstr create mode 100644 hints.zap create mode 100644 hints.zil create mode 100644 input.zabstr create mode 100644 input.zap create mode 100644 input.zil create mode 100644 intro.zabstr create mode 100644 intro.zap create mode 100644 intro.zil create mode 100644 island.zabstr create mode 100644 island.zap create mode 100644 island.zil create mode 100644 journey-glue create mode 100644 journey-nsplit create mode 100644 journey-split create mode 100644 journey-taa create mode 100644 journey.aplit create mode 100644 journey.bwmac.1 create mode 100644 journey.chart create mode 100644 journey.d1 create mode 100644 journey.d2 create mode 100644 journey.d3 create mode 100644 journey.d4 create mode 100644 journey.d5 create mode 100644 journey.errors create mode 100644 journey.lowcore create mode 100644 journey.nsplit create mode 100644 journey.record create mode 100644 journey.seg create mode 100644 journey.seginfo create mode 100644 journey.split create mode 100644 journey.syms create mode 100644 journey.zap create mode 100644 journey.zil create mode 100644 journey.zip create mode 100644 journeydat.zap create mode 100644 journeyfreq.zap create mode 100644 journeypur.zap create mode 100644 journeystr.zap create mode 100644 lake.zabstr create mode 100644 lake.zap create mode 100644 lake.zil create mode 100644 lavos.zabstr create mode 100644 lavos.zap create mode 100644 lavos.zil create mode 100644 mines.zabstr create mode 100644 mines.zap create mode 100644 mines.zil create mode 100644 mudsub create mode 100644 objects.zabstr create mode 100644 objects.zap create mode 100644 objects.zil create mode 100644 ojourney.seg create mode 100644 ojourney.zip create mode 100644 output.zabstr create mode 100644 output.zap create mode 100644 output.zil create mode 100644 part2.zabstr create mode 100644 part2.zap create mode 100644 part2.zil create mode 100644 pool.save create mode 100644 powder.save create mode 100644 prison.zabstr create mode 100644 prison.zap create mode 100644 prison.zil create mode 100644 river.zabstr create mode 100644 river.zap create mode 100644 river.zil create mode 100644 segment.info create mode 100644 spells.zabstr create mode 100644 spells.zap create mode 100644 spells.zil create mode 100644 stair.zabstr create mode 100644 stair.zap create mode 100644 stair.zil create mode 100644 tales.zabstr create mode 100644 tales.zap create mode 100644 tales.zil create mode 100644 test.save create mode 100644 tomb.zabstr create mode 100644 tomb.zap create mode 100644 tomb.zil create mode 100644 trap.zabstr create mode 100644 trap.zap create mode 100644 trap.zil create mode 100644 voyage.zabstr create mode 100644 voyage.zap create mode 100644 voyage.zil create mode 100644 wharf.zabstr create mode 100644 wharf.zap create mode 100644 wharf.zil create mode 100644 windows.zil create mode 100644 zan.zabstr create mode 100644 zan.zap create mode 100644 zan.zil diff --git a/README.md b/README.md new file mode 100644 index 0000000..12869fd --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +# journey diff --git a/astrix.zabstr b/astrix.zabstr new file mode 100644 index 0000000..2c9182e --- /dev/null +++ b/astrix.zabstr @@ -0,0 +1,70 @@ + + +> + +>) (GRAPHIC G-MOUNTAIN) ( +CAST-LIMIT INF) (ACTION ) (T )> < +PRINTI "countered">) (T )> ) ( ) ( ) ( ) ( >> ) ( )>)> + + + + + + + +> +> + + + + + + + + + \ No newline at end of file diff --git a/astrix.zap b/astrix.zap new file mode 100644 index 0000000..93fc65c --- /dev/null +++ b/astrix.zap @@ -0,0 +1,281 @@ + + .SEGMENT "RIVER" + + + .FUNCT ANONF-215:ANY:0:0 + FCLEAR WEBBA-MAP,DONT-EXAMINE + RTRUE + + + .FUNCT ANONF-216:ANY:0:0 + EQUAL? ACTION,SCOUT-COMMAND \?CCL3 + ICALL UPDATE-FSET,HERE,DONT-SCOUT + FSET HERE,SCOUTED + EQUAL? ACTOR,ESHER \?CCL6 + ICALL2 WPRINTD,ACTOR + PRINTI " was sent to scout out the various paths, and returned a short while later. ""They all seem to lead up the mountain,"" he said. ""Perhaps it does not matter which one we take.""" + JUMP ?CND4 +?CCL6: ICALL2 WPRINTD,ACTOR + PRINTI " went ahead to scout the various paths, and returned a short while later. ""I have not been this far east in my travels,"" he said, ""I sense great danger here; I wish we did not have to guess which path to take up the mountain.""" +?CND4: CRLF + CRLF + PRINTI """I fear that such a powerful Wizard as Astrix would try to defend himself against unwanted visitors,"" Praxix " + EQUAL? ACTOR,ESHER \?CCL9 + PRINTI "countered" + JUMP ?CND7 +?CCL9: PRINTI "said, echoing Minar's concerns" +?CND7: PRINTC 46 + RTRUE +?CCL3: EQUAL? ACTION,LEFT-COMMAND \?CCL11 + CALL2 AM-MOVE,0 + RSTACK +?CCL11: EQUAL? ACTION,RIGHT-COMMAND \?CCL13 + CALL2 AM-MOVE,1 + RSTACK +?CCL13: EQUAL? ACTION,BACK-COMMAND \?CCL15 + CALL2 AM-MOVE,-1 + RSTACK +?CCL15: EQUAL? ACTION,CAST-COMMAND \?CCL17 + EQUAL? ACTION-OBJECT,FAR-VISION-SPELL \?CCL17 + CALL QSET?,FAR-VISION-SPELL,INCAPACITATED + ZERO? STACK \?CCL17 + CALL1 ASTRIX-RESPONDS-TO-FLARE + RSTACK +?CCL17: EQUAL? ACTION,GIVE-UP-COMMAND \FALSE + ICALL2 HINT,HINT-WEBBA-MAP + REMOVE HINT-AVALANCHE + REMOVE HINT-MTN-LION + CALL1 GIVE-UP-ENDING + RSTACK + + + .FUNCT GIVE-UP-ENDING:ANY:0:0 + PRINTI "I am sad to report that we never did reach Astrix, though we had travelled so far and accomplished so much. It was a sad retreat back to Lavos, and word of our failure spread throughout the land like a winter's gale. The end had come for our journey, and there would be no others." + CALL1 BAD-ENDING + RSTACK + + + .FUNCT AM-MOVE:ANY:1:1,LR + ICALL FORCE-TRAVEL-COMMAND,HERE,BACK-COMMAND + LESS? LR,0 \?CCL3 + PRINTI "Unsure of whether our last decision was correct, we backtracked to " + SHIFT ASTRIX-MAZE-ROUTE,-1 >ASTRIX-MAZE-ROUTE + DEC 'ASTRIX-FORK + EQUAL? ASTRIX-MAZE-ROUTE,1 \?CCL6 + ICALL CHANGE-TRAVEL-COMMAND,HERE,BACK-COMMAND,GIVE-UP-COMMAND + PRINTI "where all paths began, at the edge of the Great River." + RTRUE +?CCL6: PRINTI "the previous fork along the path." + RTRUE +?CCL3: SHIFT ASTRIX-MAZE-ROUTE,1 + ADD STACK,LR >ASTRIX-MAZE-ROUTE + INC 'ASTRIX-FORK + EQUAL? ASTRIX-MAZE-ROUTE,ASTRIX-MAZE-PATH \?CCL9 + FSET WEBBA-MAP,DONT-EXAMINE + CALL1 ARRIVE-AT-ASTRIX-TOWER + RSTACK +?CCL9: GRTR? ASTRIX-MAZE-ROUTE,63 \?CCL11 + SET 'ASTRIX-MAZE-ROUTE,1 + SET 'ASTRIX-FORK,1 + ICALL CHANGE-TRAVEL-COMMAND,HERE,BACK-COMMAND,GIVE-UP-COMMAND + RANDOM 100 + LESS? 50,STACK /?CCL14 + CALL1 AM-LION + RSTACK +?CCL14: CALL1 AM-AVALANCHE + RSTACK +?CCL11: GET ASTRIX-MAZE-STR-1,ASTRIX-FORK + PRINT STACK + ZERO? LR \?CCL17 + PRINTI "left" + JUMP ?CND15 +?CCL17: PRINTI "right" +?CND15: PRINTI "hand path. " + GET ASTRIX-MAZE-STR-2,ASTRIX-FORK + PRINT STACK + RTRUE + + + .FUNCT AM-LION:ANY:0:0,FIP + CALL1 SPARE-VICTIM >FIP + PRINTI "Our path rose steeply for a short while, but the path ended abruptly. " + ZERO? FIP /?CCL3 + ZERO? ASTRIX-TRAP \?CCL3 + SET 'ASTRIX-TRAP,TRUE-VALUE + ICALL2 PARTY-REMOVE,FIP + ICALL2 HINT,HINT-MTN-LION + PRINTI "As " + ICALL2 WPRINTD,FIP + PRINTI " began clambering up the rock face, he was struck by a mountain lion, killing him instantly. The lion stood there before us, protecting his kill." + CALL2 CHECK-ESSENCES,FIRE-SPELL + ZERO? STACK /?CCL8 + PRINTI " Praxix, quickly taking some fire essence from his pouch, cast it upon the lion, engulfing him in flame." + ICALL2 USE-ESSENCES,FIRE-SPELL + PRINTI " We buried poor " + ICALL2 WPRINTD,FIP + PRINTI " there, with Praxix performing the burial ritual. And then," + JUMP ?CND1 +?CCL8: PRINTI "With no magic that might help us retrieve " + ICALL2 WPRINTD,FIP + PRINTI "'s body," + JUMP ?CND1 +?CCL3: PRINTI """We shall be spending the next week climbing rock,"" Praxix said, ""I suggest trying another path."" I agreed, and" +?CND1: PRINTI " we slowly backtracked down the paths we had chosen, thereby reaching our starting point at the base of the mountain." + RTRUE + + + .FUNCT AM-AVALANCHE:ANY:0:0,FIP + PRINTI "Our chosen path wound its way steeply up the side of the mountain." + CALL1 SPARE-VICTIM >FIP + ZERO? FIP /?CCL3 + ZERO? ASTRIX-TRAP \?CCL3 + SET 'ASTRIX-TRAP,TRUE-VALUE + ICALL2 PARTY-REMOVE,FIP + ICALL2 HINT,HINT-AVALANCHE + PRINTI " With no warning, Praxix shouted, ""Down! Rocks!"" but " + ICALL2 WPRINTD,FIP + PRINTI " did not move quickly enough. A large rock struck him on the head, splitting his skull and knocking him off the path, and down into a deep gully." + CRLF + CRLF + ICALL UPDATE-FSET,HERE,DONT-SCOUT + CALL2 HAPPENED-QUICKLY,FIP + RSTACK +?CCL3: PRINTI " I was about to continue when Praxix grabbed me, pulling me out of the path of some large falling rocks. ""Let us try another path,"" he said. And so we made the long descent back to the river to attempt again to find the path to Astrix." + RTRUE + + + .FUNCT SPARE-VICTIM:ANY:0:0 + FSET? MINAR,IN-PARTY \?CCL3 + FSET? DWARF-MEETING,SEEN \?CCL3 + RETURN MINAR +?CCL3: FSET? ESHER,IN-PARTY \?CCL7 + RETURN ESHER +?CCL7: FSET? BERGON,IN-PARTY \FALSE + FSET? DWARF-MEETING,SEEN \FALSE + FSET? HIGH-PLAIN,SEEN \FALSE + RETURN BERGON + + + .FUNCT HAPPENED-QUICKLY:ANY:1:1,FIP + PRINTI "It had happened so quickly, we stood in stunned silence, staring at the place where " + ICALL2 WPRINTD,FIP + PRINTI " had met his end. ""We have come so far; this is a tragic blow!"" Praxix said, then performed a brief burial ritual. We descended all of the way back to our starting point at the river, but no words were spoken." + RTRUE + + + .FUNCT ARRIVE-AT-ASTRIX-TOWER:ANY:0:0,CNT,STN + CALL1 STONE-COUNT >CNT + SET '2ND-PASS,TRUE-VALUE + IN? HERMIT-POWDER,INVENTORY \?CND1 + FSET HERMIT-POWDER,INCAPACITATED +?CND1: ICALL2 GRAPHIC,G-ASTRIX + PRINTI "For six long hours, we continued to climb steeply up the side of the Sunrise Mountain, and thus we came to the high tower of Astrix, the Wizard. No sooner had we arrived, than the tower's massive oak door opened." + CRLF + CRLF + PRINTI """I have been following your progress with great interest,"" the Wizard said, stroking his stringy gray beard. ""You are a very resourceful group, that is certain!""" + CRLF + CRLF + PRINTI "His voice then became dark. ""The question is: Have you mettle enough to make siege on the " + PRINT BAD-GUY + PRINTI " himself?"" And then, smiling, the darkness fell from his voice, and he answered his own question, ""We shall see, I suppose; we shall see.""" + CRLF + CRLF + PRINTI "Leading us to his hearth, he sat us in a semi-circle around the blazing fire and spoke. ""There is a story I must tell, a story of Seven Stones. Created in a time lost to living memory, these Stones contained the very strength and essence of our world. Of the Seven, Four were entrusted to the races of men who could use them best: Elves, Dwarves, Nymphs, and Wizards.""" + CRLF + CRLF + PRINTI """These are the Four: the Elf Stone, green as the forests of old, and the Dwarf Stone, brown as the caverns of Forn a-klamen; the Nymph Stone, blue as the deep waters of M'nera, and the Wizard Stone, red as the dark fire of Serdi.""" + CRLF + CRLF + PRINTI """The four races are now sundered, and the Four have long been kept apart, but now, with the " + PRINT BAD-GUY + PRINTI " rearing his misshapen head in our lands, we must bring them together again. For with them, we can hope to find the Two, and then, finally, the One with whose help we can destroy all Evil.""" + CRLF + CRLF + PRINTI """For it is told that having the Four, it is possible to find the Two; so, also, do the Two give witness to their master, the One that in elder days was called the Anvil!""" + CRLF + CRLF + GRTR? CNT,0 \?CND3 + PRINTI """Do they look anything like this?"" I asked, sheepishly, holding up the " + CALL1 FIRST-STONE >STN + ICALL2 WPRINTD,STN + PRINTI " to Astrix' view." + CRLF + CRLF + PRINTI """You are too modest,"" he said, grinning widely, ""Yes, this is the " + CALL2 STONE-NAME,STN + PRINT STACK + PRINTI ".""" + CRLF + CRLF +?CND3: GRTR? CNT,1 \?CND5 + PRINTI """Oh,"" I said. ""And th" + EQUAL? CNT,2 \?CCL9 + PRINTI "is" + JUMP ?CND7 +?CCL9: PRINTI "ese" +?CND7: PRINTI "...?""" + CRLF + CRLF + PRINTI """Indeed, you have been busy,"" Astrix said, taking the stones, and slapping me heartily on the back." + CRLF + CRLF +?CND5: SET 'PASS-1-STONES,CNT + EQUAL? CNT,3 \?CND10 + ICALL1 ASTRIX-SHOWS-STONE + RTRUE +?CND10: IN? NYMPH-STONE,INVENTORY \?CND12 + REMOVE NYMPH-STONE +?CND12: IN? DWARF-STONE,INVENTORY \?CND14 + REMOVE DWARF-STONE +?CND14: IN? ELF-STONE,INVENTORY \?CND16 + REMOVE ELF-STONE +?CND16: FSET? DWARF-MEETING,SEEN /?CCL20 + PRINTI "Astrix sat in deep thought, then spoke again. ""I am certain the Dwarves who still walk the dark caverns can be of help to us. I know of a gate...,"" Astrix said, and he proceeded to tell us where we might find entrance to the Dwarves' kingdom." + CRLF + CRLF + PRINTI "We trekked for five days until we reached the spot Astrix had sent us to; ironically, we were not far from the fork at Lavos where we had started our journey." + ICALL2 NEXT-DAY,5 + FSET? CANYON-GATE,SCOUTED \?CCL23 + ICALL TRAVEL-COMMANDS,CANYON-GATE,ENTER-COMMAND + JUMP ?CND21 +?CCL23: ICALL2 TRAVEL-COMMANDS,CANYON-GATE +?CND21: CALL2 MOVE-TO,CANYON-GATE + RSTACK +?CCL20: FSET? HIGH-PLAIN,SEEN /?CCL25 + PRINTI """There is a place,"" Astrix began, ""a place high in the mountains where we may find help in our cause."" He gave us directions, and sent us on our way." + CRLF + CRLF + PRINTI "We trekked for three days until we reached the high plain to which Astrix had sent us. Below, a large, clear lake sat in a bowl in the mountains." + ICALL2 NEXT-DAY,3 + CALL2 MOVE-TO,HIGH-PLAIN + RSTACK +?CCL25: CALL2 RETURN-TO-ASTRIX-TOWER,TRUE-VALUE + RSTACK + + + .FUNCT STONE-COUNT:ANY:0:0,OBJ,CNT + FIRST? INVENTORY >OBJ /?PRG2 +?PRG2: ZERO? OBJ \?CCL6 + RETURN CNT +?CCL6: EQUAL? OBJ,DWARF-STONE,ELF-STONE,NYMPH-STONE \?CND4 + INC 'CNT +?CND4: NEXT? OBJ >OBJ /?PRG2 + JUMP ?PRG2 + + + .FUNCT STONE-NAME:ANY:1:1,STN + GETP STN,P?STONE-NAME + RSTACK + + + .FUNCT FIRST-STONE:ANY:0:0,OBJ + FIRST? INVENTORY >OBJ /?PRG2 +?PRG2: ZERO? OBJ /FALSE + EQUAL? OBJ,DWARF-STONE,ELF-STONE,NYMPH-STONE \?CND4 + RETURN OBJ +?CND4: NEXT? OBJ >OBJ /?PRG2 + JUMP ?PRG2 + + .ENDSEG + + .ENDI diff --git a/astrix.zil b/astrix.zil new file mode 100644 index 0000000..563b6ea --- /dev/null +++ b/astrix.zil @@ -0,0 +1,326 @@ +"ASTRIX for + JOURNEY + (c) Copyright 1988, 1989 Infocom, Inc. All Rights Reserved." + + + +> + + + +>) + (GRAPHIC G-MOUNTAIN) + (CAST-LIMIT INF) + (ACTION + + ) + (T + )> + + + ) + (T + )> + ) + (LEFT + ) + (RIGHT + ) + (BACK + ) + ( + + >> + ) + (GIVE-UP + + + + )>)> + + + > + + + + + + + + + > + > + + + ) + (T + )> + ) + (T + .LR>> + >)> + + + ) + ( + ;"We've gone six turns and are all messed up now..." + + + + + ) + (T + )>) + (T + ;"Text depending on how far we are (check high bit of ROUTE)" + > + ) + (T )> + + >)>> + +> + +> + +> + + > + + + + + + + + ) + (T + )>) + (T + )> + > + + + > + > + + + + + + ) + (T + )>> + + + > + ,MINAR) + ( ,ESHER) + ( + + > ,BERGON)>> + +> + +) STN) + + + )> + + + + + + + + + + > " to Astrix' view." CR CR> + + > + )> + + + + ) + (T + )> + + )> + + + + )> + ;"Don't need these - they just clutter up the inventory..." + + )> + + )> + + )> + > + + + + + ) + (T + )> + ) + (> + + + + ) + (T + )>> + +) (CNT 0)) + ) + ( + >)> + >>> + +> + +)) + ) + ( + )> + >>> + + + diff --git a/characters.zabstr b/characters.zabstr new file mode 100644 index 0000000..cbf4e3f --- /dev/null +++ b/characters.zabstr @@ -0,0 +1,105 @@ + + + + + + + + + + + + +> >) (ADD >) (ATTACK 40 30) (DEFEND 20 50) ( +STATUS 100)> + + + + + + + + +> < +ADD-PROVISION-COMMAND ,ESHER ,LOOK-AROUND-COMMAND>)>>) (REMOVE >)>>) (ATTACK 20 10) (DEFEND 10 35) (STATUS 100)> + + + > > < +REMOVE-PROVISION-COMMAND ,ESHER ,LOOK-AROUND-COMMAND>)>>) (REMOVE > > < +ADD-TRAVEL-COMMAND ,ESHER ,SCOUT-COMMAND> )>>) (ATTACK 30 20) (DEFEND 10 40) (STATUS 100)> + + + >)> +> )>>) (ADD < +EXECUTE ("AUX" F) > < +REMOVE-TRAVEL-COMMAND .F ,SCOUT-COMMAND> )>>) (ATTACK 30 20) (DEFEND 10 40) (STATUS 100)> + + + + +> + + + + + + + + + + +> + \ No newline at end of file diff --git a/characters.zap b/characters.zap new file mode 100644 index 0000000..1bcc976 --- /dev/null +++ b/characters.zap @@ -0,0 +1,209 @@ + + .SEGMENT "0" + + + .FUNCT ANONF-6:ANY:0:0 + CALL FIRST-IN-PARTY,ESHER,HURTH,MINAR,PRAXIX >LEADER + CALL ADD-TRAVEL-COMMAND,LEADER,GET-ADVICE-COMMAND + RSTACK + + + .FUNCT ANONF-7:ANY:0:0 + ICALL REMOVE-TRAVEL-COMMAND,LEADER,GET-ADVICE-COMMAND + SET 'LEADER,BERGON + RETURN LEADER + + + .FUNCT ANONF-8:ANY:0:0 + CALL FIRST-IN-PARTY,HURTH,MINAR + ZERO? STACK \FALSE + ICALL ADD-TRAVEL-COMMAND,ESHER,SCOUT-COMMAND + CALL ADD-PROVISION-COMMAND,ESHER,LOOK-AROUND-COMMAND + RSTACK + + + .FUNCT ANONF-9:ANY:0:0 + EQUAL? ESHER,LEADER \FALSE + CALL FIRST-IN-PARTY,BERGON,HURTH,MINAR,PRAXIX >LEADER + RETURN LEADER + + + .FUNCT ANONF-10:ANY:0:0 + FSET MINAR,DONT-DROP + FSET? HURTH,IN-PARTY /FALSE + FSET? ESHER,IN-PARTY \FALSE + ICALL REMOVE-TRAVEL-COMMAND,ESHER,SCOUT-COMMAND + CALL REMOVE-PROVISION-COMMAND,ESHER,LOOK-AROUND-COMMAND + RSTACK + + + .FUNCT ANONF-11:ANY:0:0 + FSET? HURTH,IN-PARTY /FALSE + FSET? ESHER,IN-PARTY \FALSE + ICALL ADD-TRAVEL-COMMAND,ESHER,SCOUT-COMMAND + CALL ADD-PROVISION-COMMAND,ESHER,LOOK-AROUND-COMMAND + RSTACK + + + .FUNCT ANONF-12:ANY:0:0,F + EQUAL? HURTH,LEADER \?CND1 + CALL FIRST-IN-PARTY,BERGON,ESHER,MINAR,PRAXIX >LEADER +?CND1: CALL FIRST-IN-PARTY,MINAR,ESHER >F + ZERO? F /FALSE + ICALL ADD-TRAVEL-COMMAND,F,SCOUT-COMMAND + CALL ADD-PROVISION-COMMAND,F,LOOK-AROUND-COMMAND + RSTACK + + + .FUNCT ANONF-13:ANY:0:0,F + CALL FIRST-IN-PARTY,MINAR,ESHER >F + ZERO? F /FALSE + ICALL REMOVE-TRAVEL-COMMAND,F,SCOUT-COMMAND + CALL REMOVE-PROVISION-COMMAND,F,LOOK-AROUND-COMMAND + RSTACK + + + .FUNCT CLEAR-PARTY-BIT:ANY:1:1,BIT,OFF +?PRG1: IGRTR? 'OFF,PARTY-MAX /TRUE + GET PARTY,OFF + FCLEAR STACK,BIT + JUMP ?PRG1 + + + .FUNCT MAKE-UNBUSY:ANY:1:1,ACT + FCLEAR ACT,BUSY + SET 'UPDATE-FLAG,TRUE-VALUE + RETURN UPDATE-FLAG + + + .FUNCT MAKE-BUSY:ANY:1:2,ACT,CMD,OFF,TBL + ASSIGNED? 'CMD /?CND1 + SET 'CMD,BUSY-COMMAND +?CND1: CALL2 PARTY-PCM,ACT >OFF + ZERO? OFF /FALSE + FSET ACT,BUSY + GET CHARACTER-INPUT-TBL,OFF >TBL + PUT TBL,0,CMD + PUT TBL,1,NUL-COMMAND + PUT TBL,2,NUL-COMMAND + CALL2 NORMAL-ALL,OFF + RSTACK + + + .FUNCT CLEAR-BUSY:ANY:0:0 + CALL2 CLEAR-PARTY-BIT,BUSY + RSTACK + + + .FUNCT NEW-CHARACTER:ANY:1:1,CHR,ACT + SET 'ACT,ACTOR + ICALL2 PURIFY-CHARACTER,CHR + SET 'UPDATE-FLAG,TRUE-VALUE + ICALL1 PRINT-CHARACTER-COMMANDS + SET 'ACTOR,ACT + RETURN ACTOR + + + .FUNCT PURIFY-CHARACTER:ANY:1:1,CHR + FCLEAR CHR,BUSY + FCLEAR CHR,SUBGROUP + PUTP CHR,P?STATUS,100 + RTRUE + + + .FUNCT PARTY-ADD:ANY:1:1,CHR,NC + ADD PARTY-MAX,1 >NC + GRTR? NC,5 \?CND1 + PRINTI "[Error: Attempt to add 6th party member]" + ICALL2 WPRINTD,CHR + RTRUE +?CND1: PUT PARTY,PARTY-MAX,CHR + PUT PARTY,NC,TAG + SET 'PARTY-MAX,NC + FSET CHR,IN-PARTY + ICALL1 SORT-PARTY + ICALL2 NEW-CHARACTER,CHR + GETP CHR,P?ADD + CALL STACK >NC + SET 'UPDATE-FLAG,TRUE-VALUE + RTRUE + + + .FUNCT PARTY-CHANGE:ANY:2:2,CHR1,CHR2,CNT,TMP + GET PARTY,0 >CNT +?PRG1: LESS? CNT,1 /FALSE + GET PARTY,CNT + EQUAL? STACK,CHR1 \?CND3 + PUT PARTY,CNT,CHR2 + FSET CHR2,IN-PARTY + FCLEAR CHR1,IN-PARTY + ICALL1 SORT-PARTY + ICALL2 NEW-CHARACTER,CHR2 + GETP CHR1,P?REMOVE + CALL STACK >TMP + GETP CHR2,P?ADD + CALL STACK >TMP + SET 'UPDATE-FLAG,TRUE-VALUE + RTRUE +?CND3: DEC 'CNT + JUMP ?PRG1 + + + .FUNCT PARTY-REMOVE:ANY:1:1,CHR,CNT,C,ACT,?TMP1,?TMP2 + SET 'ACT,ACTOR +?PRG1: IGRTR? 'CNT,PARTY-MAX /FALSE + GET PARTY,CNT + EQUAL? STACK,CHR \?PRG1 + ADD CNT,1 + MUL STACK,2 + ADD PARTY,STACK >?TMP2 + MUL CNT,2 + ADD PARTY,STACK >?TMP1 + SUB PARTY-MAX,CNT + MUL STACK,2 + COPYT ?TMP2,?TMP1,STACK + MUL PARTY-MAX,2 + ADD PARTY,STACK + COPYT STACK,0,2 + DEC 'PARTY-MAX + FCLEAR CHR,IN-PARTY + ICALL1 SORT-PARTY + SET 'UPDATE-FLAG,TRUE-VALUE + ICALL1 PRINT-CHARACTER-COMMANDS + SET 'ACTOR,ACT + GETP CHR,P?REMOVE + CALL STACK >C + RTRUE + + + .FUNCT SORT-PARTY:ANY:0:0,CNT + SET 'CNT,1 + FSET? BERGON,IN-PARTY \?CND1 + PUT PARTY-SORT-TBL,CNT,BERGON + INC 'CNT +?CND1: FSET? PRAXIX,IN-PARTY \?CND3 + PUT PARTY-SORT-TBL,CNT,PRAXIX + INC 'CNT +?CND3: FSET? ESHER,IN-PARTY \?CND5 + PUT PARTY-SORT-TBL,CNT,ESHER + INC 'CNT +?CND5: FSET? MINAR,IN-PARTY \?CND7 + PUT PARTY-SORT-TBL,CNT,MINAR + INC 'CNT +?CND7: FSET? HURTH,IN-PARTY \?CND9 + PUT PARTY-SORT-TBL,CNT,HURTH + INC 'CNT +?CND9: FSET? UMBER,IN-PARTY \?CND11 + PUT PARTY-SORT-TBL,CNT,UMBER + INC 'CNT +?CND11: FSET? TAG,IN-PARTY \?CND13 + PUT PARTY-SORT-TBL,CNT,TAG + INC 'CNT +?CND13: MUL PARTY-MAX,2 + ADD STACK,2 + COPYT PARTY-SORT-TBL,PARTY,STACK + RTRUE + + .ENDSEG + + .ENDI diff --git a/characters.zil b/characters.zil new file mode 100644 index 0000000..c85d7ab --- /dev/null +++ b/characters.zil @@ -0,0 +1,319 @@ +"CHARACTERS for + JOURNEY + (c) Copyright 1988, 1989 Infocom, Inc. All Rights Reserved." + + + + + + + + + + + + +) + (SDESC "Praxix") + (KBD %) + (CBIT PRAXIXBIT) + (ROBJ HIMSELF-OBJECT) + (FLAGS IN-PARTY) + (TRAVEL-COMMANDS CAST-COMMAND EXAMINE-COMMAND NUL-COMMAND) + (PROVISION-COMMANDS EXAMINE-COMMAND NUL-COMMAND NUL-COMMAND) + (FIGHT-COMMANDS CAST-COMMAND NUL-COMMAND NUL-COMMAND) + (OPTION-COMMANDS NUL-COMMAND NUL-COMMAND NUL-COMMAND) + (SAVED-COMMANDS NUL-COMMAND NUL-COMMAND NUL-COMMAND) + (ATTACK 10 10) + (DEFEND 0 30) + (STATUS 100)> + +) + (SDESC "Bergon") + (KBD %) + (CBIT BERGONBIT) + (FLAGS IN-PARTY) + (TRAVEL-COMMANDS GET-ADVICE-COMMAND NUL-COMMAND NUL-COMMAND) + (PROVISION-COMMANDS GET-ADVICE-COMMAND NUL-COMMAND NUL-COMMAND) + (FIGHT-COMMANDS FLANK-COMMAND NUL-COMMAND NUL-COMMAND) + (OPTION-COMMANDS NUL-COMMAND NUL-COMMAND NUL-COMMAND) + (SAVED-COMMANDS NUL-COMMAND NUL-COMMAND NUL-COMMAND) + (ROBJ BERGON-OBJECT) + (REMOVE + > + >) + (ADD + + >) + (ATTACK 40 30) + (DEFEND 20 50) + (STATUS 100)> + +) + (FLAGS DONT-TAKE)> + +) + (FLAGS DONT-TAKE)> + +) + (LOC RANDOM-OBJECTS) + (FLAGS DONT-TAKE)> + +) + (LOC RANDOM-OBJECTS) + (FLAGS DONT-TAKE)> + +) + (LOC RANDOM-OBJECTS) + (FLAGS DONT-TAKE)> + +) + (LOC RANDOM-OBJECTS) + (FLAGS DONT-TAKE)> + +) + (SDESC "Esher") + (KBD %) + (CBIT ESHERBIT) + (FLAGS IN-PARTY) + (ROBJ ESHER-OBJECT) + (TRAVEL-COMMANDS EXAMINE-COMMAND SCOUT-COMMAND NUL-COMMAND) + (PROVISION-COMMANDS LOOK-AROUND-COMMAND NUL-COMMAND NUL-COMMAND) + (FIGHT-COMMANDS NUL-COMMAND NUL-COMMAND NUL-COMMAND) + (OPTION-COMMANDS NUL-COMMAND NUL-COMMAND NUL-COMMAND) + (SAVED-COMMANDS NUL-COMMAND NUL-COMMAND NUL-COMMAND) + (ADD + > + + )>>) + (REMOVE + + >)>>) + (ATTACK 20 10) + (DEFEND 10 35) + (STATUS 100)> + +) + (SDESC "Minar") + (KBD %) + (CBIT MINARBIT) + (ROBJ MINAR-OBJECT) + (TRAVEL-COMMANDS SCOUT-COMMAND NUL-COMMAND NUL-COMMAND) + (PROVISION-COMMANDS LOOK-AROUND-COMMAND NUL-COMMAND NUL-COMMAND) + (FIGHT-COMMANDS FLANK-COMMAND NUL-COMMAND NUL-COMMAND) + (OPTION-COMMANDS NUL-COMMAND NUL-COMMAND NUL-COMMAND) + (SAVED-COMMANDS NUL-COMMAND NUL-COMMAND NUL-COMMAND) + (ADD + + > + > + + )>>) + (REMOVE + > + > + + )>>) + (ATTACK 30 20) + (DEFEND 10 40) + (STATUS 100)> + +) + (SDESC "Hurth") + (KBD %) + (CBIT HURTHBIT) + (ROBJ HURTH-OBJECT) + (TRAVEL-COMMANDS SCOUT-COMMAND TELL-STORY-COMMAND EXAMINE-COMMAND) + (PROVISION-COMMANDS LOOK-AROUND-COMMAND NUL-COMMAND NUL-COMMAND) + (FIGHT-COMMANDS FLANK-COMMAND NUL-COMMAND NUL-COMMAND) + (OPTION-COMMANDS NUL-COMMAND NUL-COMMAND NUL-COMMAND) + (SAVED-COMMANDS NUL-COMMAND NUL-COMMAND NUL-COMMAND) + (REMOVE + + >)> + > + + )>>) + (ADD + > + + )>>) + (ATTACK 30 20) + (DEFEND 10 40) + (STATUS 100)> + +) + (SDESC "Umber") + (KBD %) + (CBIT UMBERBIT) + (TRAVEL-COMMANDS TELL-STORY-COMMAND NUL-COMMAND NUL-COMMAND) + (PROVISION-COMMANDS LOOK-AROUND-COMMAND NUL-COMMAND NUL-COMMAND) + (FIGHT-COMMANDS NUL-COMMAND NUL-COMMAND NUL-COMMAND) + (OPTION-COMMANDS NUL-COMMAND NUL-COMMAND NUL-COMMAND) + (SAVED-COMMANDS NUL-COMMAND NUL-COMMAND NUL-COMMAND) + (ATTACK 30 20) + (DEFEND 10 40) + (STATUS 100)> + +) + (SDESC "Tag") + (KBD %) + (CBIT TAGBIT) + (FLAGS IN-PARTY) + (TRAVEL-COMMANDS PICK-UP-COMMAND DROP-COMMAND INVENTORY-COMMAND) + (PROVISION-COMMANDS BUY-COMMAND SELL-COMMAND INVENTORY-COMMAND) + (FIGHT-COMMANDS NUL-COMMAND NUL-COMMAND NUL-COMMAND) + (OPTION-COMMANDS NUL-COMMAND NUL-COMMAND NUL-COMMAND) + (SAVED-COMMANDS NUL-COMMAND NUL-COMMAND NUL-COMMAND) + (ATTACK 25 10) + (DEFEND 10 35) + (STATUS 100)> + +> + + + +> ,PARTY-MAX> + ) + (T + .BIT>)>>> + + + > + +> + + > + + + + )>> + +> + + + + + > + + + + > + +> + + + )> + + + + + + + >> + + > + +) TMP) + ) + ( .CHR1> + + + + + + >> + >> + + )> + >>> + + + > ,PARTY-MAX> + ) + ( .CHR> + 2>> + > + <* <- ,PARTY-MAX .CNT> 2>> + > 0 2> + > + + + + + + >> + )>>> + +> + + + + >)> + + + >)> + + + >)> + + + >)> + + + >)> + + + >)> + + + >)> + 2>>> \ No newline at end of file diff --git a/combat.zabstr b/combat.zabstr new file mode 100644 index 0000000..c429df4 --- /dev/null +++ b/combat.zabstr @@ -0,0 +1,64 @@ + + + + + + +> + + + + + + + + + ("AUX" (OFF 0) CMD CHR (TOS 0) (TDS 0) OOS ODS TBL) > > > > > , +PARTY-MAX> ) (T > > > >)>> < +SCENE-ACTION ,STRENGTH-COMMAND> > + + + +> + + + + + + +> + + + + + + + + + < +LTABLE D-MAJOR D-MODERATE D-MODERATE D-MINOR>>> +> + + + +> + + + + + +> \ No newline at end of file diff --git a/combat.zap b/combat.zap new file mode 100644 index 0000000..7b90337 --- /dev/null +++ b/combat.zap @@ -0,0 +1,310 @@ + + .SEGMENT "0" + + + .FUNCT STRENGTH:ANY:3:3,CHR,TBL,OFF,?TMP1 + GETB TBL,OFF >?TMP1 + GETP CHR,P?STATUS + MUL ?TMP1,STACK + DIV STACK,100 + RSTACK + + + .FUNCT END-COMBAT:ANY:0:1,DAMAGE + ASSIGNED? 'DAMAGE /?CND1 + SET 'DAMAGE,TRUE-VALUE +?CND1: ZERO? DAMAGE /?CND3 + CRLF + CRLF + ICALL1 DAMAGE-REPORT +?CND3: ICALL2 SCENE,FALSE-VALUE + ICALL2 MODE,TRAVEL-MODE + SET 'UPDATE-FLAG,TRUE-VALUE + RETURN UPDATE-FLAG + + + .FUNCT SURPRISE-COMBAT:ANY:0:0 + CALL1 V-COMBAT + RSTACK + + + .FUNCT V-COMBAT:ANY:0:0,OFF,CMD,CHR,TOS,TDS,OOS,ODS,TBL + INC 'COMBAT-ROUND + GETPT OPPONENT,P?ATTACK >TBL + CALL STRENGTH,OPPONENT,TBL,COMBAT-COS >OOS + CALL STRENGTH,OPPONENT,TBL,COMBAT-CDS >ODS + SET 'OFF,0 +?PRG1: IGRTR? 'OFF,PARTY-MAX /?REP2 + GET PARTY,OFF >CHR + GETPT CHR,P?ATTACK >TBL + CALL STRENGTH,CHR,TBL,COMBAT-COS + ADD TOS,STACK >TOS + CALL STRENGTH,CHR,TBL,COMBAT-CDS + ADD TDS,STACK >TDS + JUMP ?PRG1 +?REP2: PUT COMBAT-STRENGTHS,CS-PARTY-OFFENSE,TOS + PUT COMBAT-STRENGTHS,CS-PARTY-DEFENSE,TDS + PUT COMBAT-STRENGTHS,CS-OPPONENT-OFFENSE,OOS + PUT COMBAT-STRENGTHS,CS-OPPONENT-DEFENSE,ODS + ICALL2 SCENE-ACTION,STRENGTH-COMMAND + ICALL1 DESCRIBE-COMBAT + RTRUE + + + .FUNCT SCENE-ACTION:ANY:1:1,CMD + SET 'ACTION,CMD + GETP SCENE-OBJECT,P?ACTION + CALL STACK + RSTACK + + + .FUNCT ADD-PARTY-DEFENSE:ANY:1:1,NUM + GET COMBAT-STRENGTHS,CS-PARTY-DEFENSE + ADD STACK,NUM + PUT COMBAT-STRENGTHS,CS-PARTY-DEFENSE,STACK + RTRUE + + + .FUNCT ADD-PARTY-OFFENSE:ANY:1:1,NUM + GET COMBAT-STRENGTHS,CS-PARTY-OFFENSE + ADD STACK,NUM + PUT COMBAT-STRENGTHS,CS-PARTY-OFFENSE,STACK + RTRUE + + + .FUNCT COMBAT-RESULT:ANY:2:2,OS,DS + MUL OS,10 + DIV STACK,DS + DIV STACK,4 + CALL MIN,STACK,5 + RSTACK + + + .FUNCT MIN:ANY:2:2,M,N + GRTR? N,M \?CCL3 + RETURN M +?CCL3: RETURN N + + + .FUNCT DESCRIBE-COMBAT:ANY:0:0,NOTELL?,TOS,TDS,OOS,ODS,ORES,DRES,TMP + GET COMBAT-STRENGTHS,CS-PARTY-OFFENSE >TOS + GET COMBAT-STRENGTHS,CS-PARTY-DEFENSE >TDS + GET COMBAT-STRENGTHS,CS-OPPONENT-OFFENSE >OOS + GET COMBAT-STRENGTHS,CS-OPPONENT-DEFENSE >ODS + ZERO? DEBUG /?CND1 + PRINTI "Off: " + PRINTN TOS + PRINTC 47 + PRINTN ODS + PRINTI " Def: " + PRINTN TDS + PRINTC 47 + PRINTN OOS +?CND1: CALL COMBAT-RESULT,TOS,ODS >OFFENSIVE-RESULT + CALL COMBAT-RESULT,OOS,TDS >DEFENSIVE-RESULT + CALL2 SCENE-ACTION,COMBAT-RESULT-COMMAND >NOTELL? + ZERO? NOTELL? \?CND3 + ZERO? COMBAT-ROUND \?CCL7 + PRINTI "Our party initially took an aggressive" + PRINTI " stance against the " + ICALL2 WPRINTD,OPPONENT + PRINTI ", who themselves were in " + MUL OOS,10 + DIV STACK,ODS + DIV STACK,4 + CALL MIN,STACK,8 + GET AGGRESSION-TBL,STACK + PRINT STACK + PRINTI " posture." + JUMP ?CND5 +?CCL7: PRINTI "We maintained our stance, as did the " + ICALL2 WPRINTD,OPPONENT + PRINTC 46 +?CND5: PRINTI " The fighting was fierce, with " + ADD OFFENSIVE-RESULT,DEFENSIVE-RESULT + ZERO? STACK \?CCL10 + PRINTI "neither side hurt in the slightest" + JUMP ?CND8 +?CCL10: EQUAL? OFFENSIVE-RESULT,DEFENSIVE-RESULT \?CCL12 + PRINTI "both sides suffering " + GET COMBAT-RESULT-TBL,OFFENSIVE-RESULT + PRINT STACK + PRINTI " injuries in what was, at best, a stand-off" + JUMP ?CND8 +?CCL12: GRTR? OFFENSIVE-RESULT,DEFENSIVE-RESULT \?CCL14 + PRINTI "the " + ICALL2 WPRINTD,OPPONENT + PRINTC 32 + GRTR? DEFENSIVE-RESULT,3 \?CCL17 + PRINTI "getting the worse beating, though we ourselves were bloodied considerably" + JUMP ?CND8 +?CCL17: GRTR? OFFENSIVE-RESULT,3 \?CCL19 + PRINTI "taking a beating at our hands, while we escaped with minor injury" + JUMP ?CND8 +?CCL19: PRINTI "and ourselves each scoring a few hits, though we clearly had the upper hand" + JUMP ?CND8 +?CCL14: PRINTI "our party " + GRTR? OFFENSIVE-RESULT,3 \?CCL22 + PRINTI "suffering major injury; I suppose it was some consolation that we did a good deal of damage ourselves" + JUMP ?CND8 +?CCL22: GRTR? DEFENSIVE-RESULT,3 \?CCL24 + PRINTI "taking some major hits, and giving not as many back" + JUMP ?CND8 +?CCL24: PRINTI "faring a bit worse than our opponent, though neither side had clearly gained the upper hand" +?CND8: PRINTC 46 +?CND3: GRTR? DEFENSIVE-RESULT,0 \?CND25 + ICALL DAMAGE-PARTY,DEFENSIVE-RESULT,NOTELL? +?CND25: GRTR? OFFENSIVE-RESULT,0 \TRUE + ICALL DAMAGE-OPPONENT,OFFENSIVE-RESULT,NOTELL? + RTRUE + + + .FUNCT DAMAGE-OPPONENT:ANY:2:2,ORES,NOTELL?,NST,TT,?TMP1 + GETP OPPONENT,P?STATUS >?TMP1 + GET OPPONENT-DAMAGE-TBL,ORES + MUL ?TMP1,STACK + DIV STACK,100 >NST + PUTP OPPONENT,P?STATUS,NST + GETP OPPONENT,P?RETREAT + LESS? NST,STACK \FALSE + CRLF + GETP OPPONENT,P?SPECIAL-ACTION + CALL STACK >?TMP1 + ZERO? ?TMP1 /?CCL5 + RETURN ?TMP1 +?CCL5: CRLF + PRINTI "The " + ICALL2 WPRINTD,OPPONENT + PRINTI ", badly hurt, retreated out of sight. We had won the battle!" + CALL1 END-COMBAT + RSTACK + + + .FUNCT DAMAGE-PARTY:ANY:2:2,DRES,NOTELL?,OFF,DOFF,DTBL,DMAX,?TMP2 + SET 'DOFF,1 + ICALL1 DAMAGE-ORDER + GET DAMAGE-TBL,DRES >DTBL + GET DTBL,0 >DMAX +?PRG1: GRTR? DOFF,DMAX /?REP2 + GRTR? DOFF,PARTY-MAX /?REP2 + GET COMBAT-DAMAGE,OFF >?TMP2 + GET DTBL,DOFF + ICALL DAMAGE-CHARACTER,?TMP2,STACK + ADD OFF,2 >OFF + INC 'DOFF + JUMP ?PRG1 +?REP2: SET 'DOFF,0 + SET 'OFF,100 + SET 'DMAX,0 +?PRG8: IGRTR? 'DOFF,PARTY-MAX /?REP9 + GET PARTY,DOFF + GETP STACK,P?STATUS >DTBL + LESS? DTBL,OFF \?PRG8 + SET 'DMAX,DOFF + SET 'OFF,DTBL + JUMP ?PRG8 +?REP9: ZERO? NOTELL? \TRUE + CALL1 PARTY-STATUS >DOFF + LESS? DOFF,60 \FALSE + CRLF + CRLF + PRINTI "Our party was badly wounded, though still able to fight. ""Let's get out of here,"" I cried, ""before we're killed!""" + RTRUE + + + .FUNCT DAMAGE-STATUS:ANY:1:1,CHR + GETP CHR,P?STATUS + DIV STACK,20 + GET DAMAGE-STATUS-TBL,STACK + RSTACK + + + .FUNCT DAMAGE-REPORT:ANY:0:0,OFF,CHR + PRINTI "The battle concluded, we took a moment to check on our condition. It appeared that " +?PRG1: IGRTR? 'OFF,PARTY-MAX \?CCL5 + PRINTC 46 + RTRUE +?CCL5: GET PARTY,OFF >CHR + EQUAL? CHR,TAG \?CCL8 + PRINTC 73 + JUMP ?CND6 +?CCL8: ICALL2 WPRINTD,CHR +?CND6: PRINTI " was " + CALL2 DAMAGE-STATUS,CHR + PRINT STACK + SUB PARTY-MAX,1 + EQUAL? OFF,STACK \?CCL11 + PRINTI ", and " + JUMP ?PRG1 +?CCL11: EQUAL? OFF,PARTY-MAX /?PRG1 + PRINTI ", " + JUMP ?PRG1 + + + .FUNCT DAMAGE-CHARACTER:ANY:2:2,CHR,TYP,NST + GETP CHR,P?STATUS + MUL TYP,STACK + DIV STACK,100 >NST + PUTP CHR,P?STATUS,NST + ZERO? DEBUG /FALSE + CRLF + PRINTI "Damage to " + ICALL2 WPRINTD,CHR + PRINTI ", status:" + PRINTN NST + RTRUE + + + .FUNCT PARTY-STATUS:ANY:0:0,CNT,SUM +?PRG1: IGRTR? 'CNT,PARTY-MAX /?REP2 + GET PARTY,CNT + GETP STACK,P?STATUS + ADD SUM,STACK >SUM + JUMP ?PRG1 +?REP2: DIV SUM,PARTY-MAX + RSTACK + + + .FUNCT DAMAGE-ORDER:ANY:0:0,POFF,DOFF,CHR,TBL,TMP,?TMP2 +?PRG1: IGRTR? 'POFF,PARTY-MAX /?REP2 + GET PARTY,POFF >CHR + PUT COMBAT-DAMAGE,DOFF,CHR + GETPT CHR,P?ATTACK >TBL + ADD DOFF,1 >?TMP2 + CALL STRENGTH,CHR,TBL,COMBAT-CDS + PUT COMBAT-DAMAGE,?TMP2,STACK + ADD DOFF,2 >DOFF + JUMP ?PRG1 +?REP2: MUL PARTY-MAX,2 + CALL PAIR-SORT,COMBAT-DAMAGE,STACK + RSTACK + + + .FUNCT PAIR-SORT:ANY:2:2,TBL,MAX,OFF,T1,T2,TT,FLG,?TMP2 +?PRG1: ADD OFF,3 + GRTR? STACK,MAX \?CND3 + ZERO? FLG /TRUE + SET 'OFF,0 + SET 'FLG,FALSE-VALUE +?CND3: ADD OFF,1 + GET TBL,STACK >?TMP2 + ADD OFF,3 + GET TBL,STACK + GRTR? ?TMP2,STACK \?CND8 + SET 'FLG,TRUE-VALUE + MUL OFF,2 + ADD TBL,STACK >TT + GET TT,0 >T1 + GET TT,1 >T2 + GET TT,2 + PUT TT,0,STACK + GET TT,3 + PUT TT,1,STACK + PUT TT,2,T1 + PUT TT,3,T2 +?CND8: ADD OFF,2 >OFF + JUMP ?PRG1 + + .ENDSEG + + .ENDI diff --git a/combat.zil b/combat.zil new file mode 100644 index 0000000..fb50c2d --- /dev/null +++ b/combat.zil @@ -0,0 +1,336 @@ +"COMBAT for + JOURNEY + (c) Copyright 1988, 1989 Infocom, Inc. All Rights Reserved." + + + +;"Attack: offensive/defensive strength + Status: relative strength + Threshold: when retreat will occur" + +) + (ATTACK 200 200) + (STATUS 100) + (RETREAT 0)> + + + + + + +;> + +> + + + + > 100>> + + + )> + > + + > + + + + + + + +> + + ("AUX" (OFF 0) CMD CHR (TOS 0) (TDS 0) OOS ODS TBL) + > + > + > + > + ;"Calculate total offensive/defensive strength" + + > ,PARTY-MAX> + ) + (T + > + > + >> + >>)>> + + + + + + + > + + + + + >> + +> + + + + + + + .NUM>>> + + .NUM>>> + +> + + .DS> 4> 5>> + + .M) (T .N)>> + +> + > + > + > + + )> + > + > + > + + + + .ODS> 4> 8>> + " posture.">) + (T + )> + + > + ) + ( + + " injuries in what was, at best, a stand-off">) + ( + + + ) + ( + ) + (T + )>) + (T + + + ) + ( + ) + (T + )>)> + )> + + )> + + )> + > + + + + + + + + + + + + + >> + +> + + + > + 100>>> + > + + >) + (T + + )>)>> + + + ;"Go through table, assigning damage." + > + > + + > ) + (T + + > + > + >)>> + + + + > ,PARTY-MAX> + ) + ( ,P?STATUS>> + .OFF> + + )>> + > 60> + ) + ;( + > + + >> + )>> + + 20>>> + +> + + + > ,PARTY-MAX> + + ) + (T + > + + ) + (T + )> + + > + > + ) + (> + )>)>>> + +> 100>>> + )>> + +> ,PARTY-MAX> + ) + (T + ,P?STATUS>>>)>> + > + +> ,PARTY-MAX> + ) + (T + >> + > + + > + >)>> + ;"Sort so that weakest character comes first" + >> + +)) + ;"Simple bubble sort" + .MAX> + ) + (T + + >)>)> + > + >> + + >> + > + > + > + > + + )> + >>> + +> + +;> + +;"To Do: + +*1) Damage to parties +*2) Description of damage +*3) How quickly opponent will retreat/scatter (i.e. at what strength) + 4) Retreating; what happens? + 5) Parlay, etc. + 6) # of opponents (multiply, etc.) +" \ No newline at end of file diff --git a/commands.zabstr b/commands.zabstr new file mode 100644 index 0000000..984d564 --- /dev/null +++ b/commands.zabstr @@ -0,0 +1,305 @@ + + +)) ) (<=? .STR "CANCEL"> ) (<=? +.STR "GONE"> ) (<=? .STR "BUSY"> ) (<=? . +STR "ILL"> ) (> > .CHR +) (<==? .CHR !\-> ) (<==? .CHR !\'> .CHR) (<==? .CHR !\+> + ) (T 32>>)>> .CNM>> +) (ANM <>)) >> > >) (T >)> > ) (T >> >> ) ( ATOM> +>) (T >> !.LST>>)>)> < +EVAL
> )) ) (<==? .CHR !\-> ) (<==? .CHR !\'> .CHR) (<==? .CHR !\+> ) (T 32>>)>> .SPN> .ACT .OBJ +8) ( 2) (T <1 .SPN>)> "[hurt]") (.ANM >) (T <>)>>>>> + + + + + + + + + + + + + + + () > + + + + + + + + () ) (T )> > + + + + + + > + +> + + + + + ) (T )> > + + + +> + + < +CLEAR-EXBIT ,ACTION-OBJECT ,ACTOR>) (T )> < +TELL ACT " examined the " AO ", but found nothing of interest.">> + + + + + + < +RTRUE>> + + < +RTRUE>> + + + + + + + + + + + + + + + ("OPTIONAL" (UPD? T) "AUX" F) )> > )> )> > + + + () > + + + + + () > + + () > + + +> + + + ) (T )> > + + + + + + + + + + () )> < +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"> + )> > + + () +) (T )> ) (T )> > + + + + ("OPTIONAL" (CAN? T) "AUX" SV) )> > ) ( + ) (T + )> +)> ) (T )>) (T )> < +REFRESH-CHECK #ZLOCAL!-IZILCH TRUE-VALUE>) (T )> )> < +RTRUE>> + + ("OPTIONAL" (CAN? T) "AUX" (FLG )) ) (T )> ) (T < +TURN-OFF-CURSOR> )> )> > + +> +> +> +> + + +> +> + ("OPTIONAL" (RM ,GAME-ROOM) "AUX" T) < +MOVE-TO .RM #ZLOCAL!-IZILCH FALSE-VALUE #ZLOCAL!-IZILCH TRUE-VALUE # +ZLOCAL!-IZILCH FALSE-VALUE> > + + + () > + + () > + + () > + + + )>)> + + () > ) (T < +CHANGE-TRAVEL-COMMAND ,CONTROLS-ROOM ,SCRIPT-OFF-COMMAND ,SCRIPT-ON-COMMAND>)> + > + + () + + > + + () ) (T )> > + + () > + + () > + + () < +V-CANCEL>> + + () < +REFRESH-CHECK> > + + + () > + + + ("OPTIONAL" (RT? <>)) ) (T )>> + + +> +> +> + +
>> + + ("AUX" (OFF 0) CHR LN (COL ,NAME-COLUMN) TBL +(CNT 0) MAX KBD FG BG) < +SET MAX 5>) (T )> > > >)> ) (T )> +> .MAX> ) (T +)>>)> > )> < +RETURN>) (T )> < +REMOVE-TRAVEL-COMMAND> )> ) +>) ( < +SOUND 1> ) ( > < +GCURSET .LN .COL> ) (T )>) (T > > < +GCURSET .LN .COL>)>) (> >> < +AND > >>> < +SOUND 1> ) ( > >> >)> ) ( > >> >)> > > )>) (T )>> > + + \ No newline at end of file diff --git a/commands.zap b/commands.zap new file mode 100644 index 0000000..a87c133 --- /dev/null +++ b/commands.zap @@ -0,0 +1,663 @@ + + .SEGMENT "0" + + + .FUNCT V-GET-ADVICE:ANY:0:0 + ICALL2 WPRINTD,LEADER + PRINTI " asked the group for advice, but none was offered." + RTRUE + + + .FUNCT V-HELP:ANY:0:0 + PRINTI "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." + CRLF + CRLF + PRINTI "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." + CRLF + CRLF + PRINTI "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 " + CALL1 APPLE2? + ZERO? STACK /?CCL3 + PRINTI "dot" + JUMP ?CND1 +?CCL3: PRINTI "arrow" +?CND1: PRINTI " on the screen is pointing to that command; then click your mouse button." + CRLF + CRLF + PRINTI "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." + CRLF + CRLF + PRINTI "Have fun!" + CALL NEW-DEFAULT,2,-1 + RSTACK + + + .FUNCT V-BUY:ANY:0:0 + PRINTI "We bought the " + ICALL2 WPRINTD,ACTION-OBJECT + PRINTI " and packed it away." + FSET ACTION-OBJECT,DONT-EXAMINE + ICALL UPDATE-MOVE,ACTION-OBJECT,INVENTORY + RTRUE + + + .FUNCT V-CAST:ANY:0:0 + RFALSE + + + .FUNCT O-CAST:ANY:0:0 + EQUAL? ACTOR,TAG \?CND1 + ICALL2 FIND-OBJECT,TAG-POWDERS + RTRUE +?CND1: CALL2 FIND-SPELL-OBJECTS,ALWAYS-SPELLS + RSTACK + + + .FUNCT FIND-SPELL-OBJECTS:ANY:1:2,OBJ,BIT,F,CNT + FIRST? OBJ >F /?PRG2 +?PRG2: ZERO? F /TRUE + EQUAL? CNT,9 /TRUE + CALL2 CHECK-ESSENCES,F + ZERO? STACK /?CND4 + CALL2 FIND-OBJECT,F >CNT +?CND4: NEXT? F >F /?PRG2 + JUMP ?PRG2 + + + .FUNCT V-DROP:ANY:0:0 + FSET? ACTION-OBJECT,DONT-DROP \?CCL3 + REMOVE HYE-DROP + ICALL1 FOOL-DROP + JUMP ?CND1 +?CCL3: ICALL UPDATE-MOVE,ACTION-OBJECT,HERE + PRINTI "Having no more need for the " + ICALL2 WPRINTD,ACTION-OBJECT + PRINTI ", we discarded it." +?CND1: CALL UPDATE-FSET,HERE,DONT-DROP + RSTACK + + + .FUNCT O-DROP:ANY:0:0 + CALL FIND-OBJECTS,INVENTORY,NEVER-DROP + RSTACK + + + .FUNCT FOOL-DROP:ANY:0:0 + CALL2 CHARACTER-HERE?,PRAXIX + ZERO? STACK /?CCL3 + PRINTI "Trying to lighten my load, I started to drop the " + ICALL2 WPRINTD,ACTION-OBJECT + PRINTI " on the ground. """ + ICALL1 WPRINTTAG + PRINTI "!"" Praxix called out loudly, startling me. ""What on earth are you doing with that " + ICALL2 WPRINTD,ACTION-OBJECT + PRINTI "? Dropping it here, of all places! How do you know we won't be needing such things? Now make yourself useful before I " + CALL2 PICK-ONE,PRAXIX-FOOL-TBL + PRINT STACK + PRINTI "!"" I hardly think Praxix was being serious, or even that such a thing was possible, but he was almost certainly right about the " + ICALL2 WPRINTD,ACTION-OBJECT + PRINTC 46 + RTRUE +?CCL3: PRINTI "I thought to lighten my load by dropping the " + ICALL2 WPRINTD,ACTION-OBJECT + PRINTI ", but felt that it would serve no purpose save giving Praxix an excuse to fry me in boiling oil when he found out." + RTRUE + + + .FUNCT V-EXAMINE:ANY:0:0 + GETPT ACTION-OBJECT,P?EXBITS + ZERO? STACK /?CCL3 + ICALL CLEAR-EXBIT,ACTION-OBJECT,ACTOR + JUMP ?CND1 +?CCL3: FSET ACTION-OBJECT,DONT-EXAMINE +?CND1: ICALL2 WPRINTD,ACTOR + PRINTI " examined the " + ICALL2 WPRINTD,ACTION-OBJECT + PRINTI ", but found nothing of interest." + RTRUE + + + .FUNCT CLEAR-EXBIT:ANY:0:2,OBJ,CHR,?TMP1 + ASSIGNED? 'OBJ /?CND1 + SET 'OBJ,ACTION-OBJECT +?CND1: ASSIGNED? 'CHR /?CND3 + SET 'CHR,ACTOR +?CND3: SET 'UPDATE-FLAG,TRUE-VALUE + GETP OBJ,P?EXBITS >?TMP1 + GETP CHR,P?CBIT + BCOM STACK + BAND ?TMP1,STACK + PUTP OBJ,P?EXBITS,STACK + RTRUE + + + .FUNCT FIND-EXAMINE:ANY:1:1,OBJ,F,CNT,?TMP1 + FIRST? OBJ >F /?PRG2 +?PRG2: ZERO? F /TRUE + EQUAL? CNT,9 /TRUE + FSET? F,DONT-EXAMINE /?CND4 + GETPT F,P?EXBITS + ZERO? STACK /?CCL9 + GETP F,P?EXBITS >?TMP1 + GETP ACTOR,P?CBIT + BTST ?TMP1,STACK \?CND4 +?CCL9: CALL2 FIND-OBJECT,F >CNT +?CND4: NEXT? F >F /?PRG2 + JUMP ?PRG2 + + + .FUNCT O-EXAMINE:ANY:0:0 + ICALL2 FIND-EXAMINE,HERE + ZERO? SUBGROUP-MODE /?CTR2 + FSET? TAG,SUBGROUP \?CCL3 +?CTR2: ICALL2 FIND-EXAMINE,INVENTORY + RTRUE +?CCL3: EQUAL? ACTOR,PRAXIX \TRUE + ICALL2 FIND-OBJECT,POUCH + RTRUE + + + .FUNCT V-TELL-STORY:ANY:0:0 + ICALL2 TELL-TALE,ACTION-OBJECT + RTRUE + + + .FUNCT V-TELL-LEGEND:ANY:0:0 + ICALL2 TELL-TALE,ACTION-OBJECT + RTRUE + + + .FUNCT O-TELL-LEGEND:ANY:0:0 + FSET? HERE,DANGEROUS /TRUE + FSET? SCENE-OBJECT,DANGEROUS /TRUE + EQUAL? ACTOR,PRAXIX \?CCL7 + CALL2 FIND-OBJECTS,PRAXIX-TALES + RSTACK +?CCL7: EQUAL? ACTOR,HURTH \?CCL9 + CALL2 FIND-OBJECTS,HURTH-STORIES + RSTACK +?CCL9: EQUAL? ACTOR,UMBER \FALSE + CALL2 FIND-OBJECTS,UMBER-STORIES + RSTACK + + + .FUNCT V-INVENTORY:ANY:0:1,UPD?,F + ASSIGNED? 'UPD? /?CND1 + SET 'UPD?,TRUE-VALUE +?CND1: EQUAL? HERE,ASTRIX-MAZE \?CND3 + ICALL UPDATE-FCLEAR,WEBBA-MAP,DONT-EXAMINE +?CND3: PRINTI "I checked our provisions at that point and found, in addition to the basic necessities of food and shelter, " + CALL2 LIST-CONTENTS,INVENTORY + ZERO? STACK \?CND5 + PRINTI "nothing whatever" +?CND5: ZERO? UPD? /?CND7 + ICALL UPDATE-FSET,HERE,INVENTORIED +?CND7: PRINTC 46 + RTRUE + + + .FUNCT LIST-CONTENTS:ANY:1:2,OBJ,AF,F,N + ASSIGNED? 'AF /?CND1 + SET 'AF,TRUE-VALUE +?CND1: EQUAL? OBJ,INVENTORY \?CND3 + REMOVE POUCH +?CND3: FIRST? OBJ >F /?PRG9 + EQUAL? OBJ,INVENTORY \FALSE + MOVE POUCH,INVENTORY + RFALSE +?PRG9: ZERO? F \?CCL13 + EQUAL? OBJ,INVENTORY \TRUE + MOVE POUCH,INVENTORY + RTRUE +?CCL13: EQUAL? F,POUCH \?CCL17 + NEXT? F >F /?PRG9 + JUMP ?PRG9 +?CCL17: ZERO? AF /?CCL21 + PRINTI "a " + JUMP ?CND19 +?CCL21: PRINTI "the " +?CND19: ICALL2 WPRINTD,F + NEXT? F >F \?PRG9 + PRINTI ", " + NEXT? F /?PRG9 + PRINTI "and " + JUMP ?PRG9 + + + .FUNCT V-NUL:ANY:0:0 + RFALSE + + + .FUNCT V-RETREAT:ANY:0:0 + ICALL1 END-COMBAT + PRINTI "We retreated out of range of attack." + RTRUE + + + .FUNCT V-SCOUT:ANY:0:0 + ICALL UPDATE-FSET,HERE,DONT-SCOUT + ICALL2 WPRINTD,ACTOR + PRINTI " scouted out the area, but found nothing new of interest." + RTRUE + + + .FUNCT V-SELL:ANY:0:0 + PRINTI "[Not implemented.]" + RTRUE + + + .FUNCT O-SELL:ANY:0:0 + EQUAL? HERE,LANDS-END-TAVERN /TRUE + CALL1 O-DROP + RSTACK + + + .FUNCT V-PICK-UP:ANY:0:0 + FSET ACTION-OBJECT,DONT-EXAMINE + ICALL UPDATE-MOVE,ACTION-OBJECT,INVENTORY + FSET? TAG,SUBGROUP \?CCL3 + PRINTI "I decided to take the " + ICALL2 WPRINTD,ACTION-OBJECT + PRINTI ", and" + JUMP ?CND1 +?CCL3: PRINTI "We decided to take the " + ICALL2 WPRINTD,ACTION-OBJECT + PRINTI ", so" +?CND1: PRINTI " I put it in my pack for safekeeping." + RTRUE + + + .FUNCT O-TAKE:ANY:0:0 + CALL FIND-OBJECTS,HERE,DONT-TAKE + RSTACK + + + .FUNCT V-BUILD-RAFT:ANY:0:0 + FSET RAFT,SEEN + GETP HERE,P?ENTER + ICALL STACK + PRINTI "There was " + FSET? RAFT,TRAPPED \?CND1 + PRINTI "still " +?CND1: PRINTI "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" + CALL QSET?,RAFT,TRAPPED + ZERO? STACK /?CND3 + PRINTI "nother" +?CND3: PRINTI " try." + RTRUE + + + .FUNCT V-LAUNCH-RAFT:ANY:0:0 + PRINTI """This would seem as good a spot as any,"" " + FSET? BERGON,IN-PARTY \?CCL3 + PRINTI "Bergon" + JUMP ?CND1 +?CCL3: PRINTI "Praxix" +?CND1: PRINTI " said, indicating the spot where we would launch the raft." + CRLF + CRLF + PRINTI "This " + EQUAL? PARTY-MAX,2 \?CCL6 + PRINTI "sounded good to me" + JUMP ?CND4 +?CCL6: PRINTI "met with general approval" +?CND4: PRINTI ", and, having boarded the raft, we used our crude oars to push ourselves out into the current." + GETP HERE,P?TEMP + PUTP IN-RIVER,P?TEMP,STACK + CALL2 MOVE-TO,IN-RIVER + RSTACK + + + .FUNCT V-SAVE:ANY:0:1,CAN?,SV + ASSIGNED? 'CAN? /?CND1 + SET 'CAN?,TRUE-VALUE +?CND1: ICALL1 TURN-ON-CURSOR + EQUAL? INTERPRETER,INT-PC \?CND3 + CRLF +?CND3: SAVE >SV + ICALL1 TURN-OFF-CURSOR + EQUAL? SV,1 \?CCL7 + ICALL1 TURN-OFF-CURSOR + PRINTI "[Saved.]" + ICALL1 REFRESH-CHECK + JUMP ?CND5 +?CCL7: EQUAL? SV,2,3 \?CCL9 + ICALL1 TURN-OFF-CURSOR + CALL1 SCREEN-NEEDS-INIT + ZERO? STACK /?CCL12 + CRLF + PRINTI "[Restored.]" + JUMP ?CND10 +?CCL12: CLEAR TEXT-WINDOW + PRINTI "[Restored.]" +?CND10: REMOVE I-CLEAR-SINGLE-MOVE-GRAPHIC + EQUAL? HERE,END-SESSION-ROOM \?CND13 + ICALL1 V-CANCEL +?CND13: GET 0,8 + BTST STACK,1 \?CCL17 + SET 'SCRIPTING-FLAG,TRUE-VALUE + GET 0,8 + BTST STACK,512 \?CCL20 + SET 'DONT-SCRIPT-INPUT,TRUE-VALUE + JUMP ?CND15 +?CCL20: SET 'DONT-SCRIPT-INPUT,FALSE-VALUE + JUMP ?CND15 +?CCL17: SET 'SCRIPTING-FLAG,FALSE-VALUE +?CND15: ICALL2 REFRESH-CHECK,TRUE-VALUE + JUMP ?CND5 +?CCL9: ICALL1 TURN-OFF-CURSOR + PRINTI "[Failed.]" +?CND5: CRLF + ZERO? CAN? /TRUE + ICALL2 V-CANCEL,TRUE-VALUE + RTRUE + + + .FUNCT V-RESTORE:ANY:0:1,CAN?,FLG + ASSIGNED? 'CAN? /?CND1 + SET 'CAN?,TRUE-VALUE +?CND1: GET 0,8 >FLG + ZERO? DONT-SCRIPT-INPUT /?CCL5 + BOR FLG,512 + PUT 0,8,STACK + JUMP ?CND3 +?CCL5: BAND FLG,511 + PUT 0,8,STACK +?CND3: ICALL1 TURN-ON-CURSOR + RESTORE + ZERO? STACK /?CCL8 + PRINTI "[Ok.]" + JUMP ?CND6 +?CCL8: ICALL1 TURN-OFF-CURSOR + PRINTI "[Failed.]" +?CND6: ICALL1 REFRESH-CHECK + ZERO? CAN? /TRUE + ICALL2 V-CANCEL,TRUE-VALUE + RTRUE + + + .FUNCT SAVE-PARTY-COMMANDS:ANY:0:0 + COPYT PARTY-COMMANDS,SAVED-PARTY-COMMANDS,12 + RTRUE + + + .FUNCT RESTORE-PARTY-COMMANDS:ANY:0:0 + COPYT SAVED-PARTY-COMMANDS,PARTY-COMMANDS,12 + ICALL2 PRINT-COLUMNS,TRUE-VALUE + SET 'PUPDATE-FLAG,FALSE-VALUE + RETURN PUPDATE-FLAG + + + .FUNCT V-GAME:ANY:0:1,RM,T + ASSIGNED? 'RM /?CND1 + SET 'RM,GAME-ROOM +?CND1: ICALL1 GO-TO-GAME-MODE + ICALL MOVE-TO,RM,FALSE-VALUE,TRUE-VALUE,FALSE-VALUE + ICALL1 CLEAR-FIELDS + SET 'UPDATE-FLAG,FALSE-VALUE + CALL1 RNUL + RSTACK + + + .FUNCT V-RESTART:ANY:0:0 + RESTART + RTRUE + + + .FUNCT V-QUIT:ANY:0:0 + CLEAR -1 + QUIT + RTRUE + + + .FUNCT V-END-SESSION:ANY:0:0 + ICALL MOVE-TO,END-SESSION-ROOM,FALSE-VALUE,TRUE-VALUE,FALSE-VALUE + CALL1 RNUL + RSTACK + + + .FUNCT ANONF-3:ANY:0:0 + EQUAL? ACTION,SAVE-COMMAND \FALSE + ICALL2 REMOVE-PARTY-COMMAND,SAVE-COMMAND + CALL2 V-SAVE,FALSE-VALUE + RSTACK + + + .FUNCT V-CONTROLS:ANY:0:0 + ZERO? SCRIPTING-FLAG /?CCL3 + GET 0,8 + BTST STACK,1 \?CCL3 + ICALL CHANGE-TRAVEL-COMMAND,CONTROLS-ROOM,SCRIPT-ON-COMMAND,SCRIPT-OFF-COMMAND + JUMP ?CND1 +?CCL3: SET 'SCRIPTING-FLAG,FALSE-VALUE + ICALL CHANGE-TRAVEL-COMMAND,CONTROLS-ROOM,SCRIPT-OFF-COMMAND,SCRIPT-ON-COMMAND +?CND1: ICALL MOVE-TO,CONTROLS-ROOM,FALSE-VALUE,TRUE-VALUE,FALSE-VALUE + CALL1 RNUL + RSTACK + + + .FUNCT V-VERSION:ANY:0:0 + CRLF + PRINTI "JOURNEY: Part I of the Golden Age Trilogy." + CRLF + PRINTI "Created by Marc Blank" + CRLF + PRINTI "Illustrations by Donald Langosy" + CRLF + PRINTI "(c) Copyright 1988, 1989 by Infocom, Inc." + CRLF + PRINTI "All rights reserved." + CRLF + PRINTI "JOURNEY is a trademark of Infocom, Inc." + CRLF + ICALL1 TELL-GAME-ID + CALL2 V-CANCEL,TRUE-VALUE + RSTACK + + + .FUNCT V-CHECK-DISK:ANY:0:0 + ICALL1 TELL-GAME-ID + CRLF + PRINTI "[Verifying.]" + CRLF + VERIFY \?CCL3 + PRINTI "Ok." + JUMP ?CND1 +?CCL3: PRINTI "** Bad **" +?CND1: CALL2 V-CANCEL,TRUE-VALUE + RSTACK + + + .FUNCT V-SCRIPT-OFF:ANY:0:0 + SET 'SCRIPTING-FLAG,FALSE-VALUE + DIROUT -2 + CALL1 V-CANCEL + RSTACK + + + .FUNCT V-SCRIPT-ON:ANY:0:0 + ICALL MOVE-TO,SCRIPT-ON-ROOM,FALSE-VALUE,TRUE-VALUE,FALSE-VALUE + CALL1 RNUL + RSTACK + + + .FUNCT V-COMMANDS:ANY:0:0 + SET 'SCRIPTING-FLAG,TRUE-VALUE + SET 'DONT-SCRIPT-INPUT,FALSE-VALUE + DIROUT 2 + ICALL1 REFRESH-CHECK + CALL1 V-CANCEL + RSTACK + + + .FUNCT V-NO-COMMANDS:ANY:0:0 + SET 'SCRIPTING-FLAG,TRUE-VALUE + SET 'DONT-SCRIPT-INPUT,TRUE-VALUE + DIROUT 2 + ICALL1 REFRESH-CHECK + CALL1 V-CANCEL + RSTACK + + + .FUNCT V-REFRESH:ANY:0:0 + ICALL2 REFRESH-SCREEN,TRUE-VALUE + CALL1 V-CANCEL + RSTACK + + + .FUNCT V-CANCEL:ANY:0:1,RT? + ICALL MOVE-TO,SAVED-GAME-ROOM,FALSE-VALUE,FALSE-VALUE,FALSE-VALUE + ICALL MODE,SAVED-GAME-MODE,FALSE-VALUE,TRUE-VALUE + ICALL1 RESTORE-PARTY-COMMANDS + SET 'SMART-DEFAULT-FLAG,TRUE-VALUE + SET 'GAME-MODE,FALSE-VALUE + SET 'UPDATE-FLAG,FALSE-VALUE + ICALL1 PRINT-CHARACTER-COMMANDS + ICALL2 PRINT-COLUMNS,TRUE-VALUE + ZERO? RT? \TRUE + CALL1 RNUL + RSTACK + + + .FUNCT RNUL:ANY:0:0 + SET 'ACTION,NUL-COMMAND + RTRUE + + + .FUNCT ILLEGAL-NAME?:ANY:1:1,LEN,MAX,CNT,CNT2,TBL,TBL2,?TMP1 + GET ILLEGAL-NAMES,0 >MAX + ADD NAME-TBL,2 >TBL +?PRG1: IGRTR? 'CNT,MAX /FALSE + GET ILLEGAL-NAMES,CNT >TBL2 + GETB TBL2,0 + EQUAL? STACK,LEN \?PRG1 + INC 'TBL2 + SET 'CNT2,-1 +?PRG8: INC 'CNT2 + EQUAL? CNT2,LEN /TRUE + GETB TBL2,CNT2 >?TMP1 + GETB TBL,CNT2 + EQUAL? ?TMP1,STACK /?PRG8 + JUMP ?PRG1 + + + .FUNCT V-CHANGE-NAME:ANY:0:0,OFF,CHR,LN,COL,TBL,CNT,MAX,KBD,FG,BG,?TMP2,?TMP1 + SET 'COL,NAME-COLUMN + ICALL1 TURN-ON-CURSOR + LESS? SCREEN-WIDTH,8-WIDTH \?CCL3 + SET 'MAX,5 + JUMP ?CND1 +?CCL3: SET 'MAX,8 +?CND1: ICALL2 SELECT-SCREEN,COMMAND-WINDOW + ZERO? FWC-FLAG \?CND4 + WINGET -3,11 >FG + SHIFT FG,-8 >BG + BAND FG,255 >FG +?CND4: CALL2 PARTY-PCM,TAG + ADD COMMAND-START-LINE,STACK + SUB STACK,1 >LN + ICALL GCURSET,LN,COL + ZERO? FWC-FLAG \?CCL8 + COLOR BG,FG + ERASE NAME-WIDTH-PIX +?CND6: ICALL GCURSET,LN,COL + ADD NAME-TBL,2 >TBL +?PRG16: INPUT 1 >CHR + EQUAL? CHR,13 \?CCL20 + ICALL1 TURN-OFF-CURSOR + ZERO? OFF \?CCL23 + ZERO? FWC-FLAG \?CND24 + COLOR FG,BG +?CND24: SET 'UPDATE-FLAG,TRUE-VALUE + ICALL1 END-CHANGE-NAME + CALL1 RNUL + RSTACK +?CCL8: ZERO? FONT3-FLAG \?PRG11 + HLIGHT H-INVERSE +?PRG11: IGRTR? 'CNT,MAX /?CND6 + PRINTC 95 + JUMP ?PRG11 +?CCL23: CALL2 ILLEGAL-NAME?,OFF + ZERO? STACK /?CND26 + ICALL1 END-CHANGE-NAME + PRINTR "[The name you have chosen is reserved. Please try again.]" +?CND26: ICALL1 REMOVE-TRAVEL-COMMAND + ZWSTR NAME-TBL,OFF,2,TAG-NAME + PUTP TAG-OBJECT,P?KBD,KBD + SET 'TAG-NAME-LENGTH,OFF + SET 'UPDATE-FLAG,TRUE-VALUE + ZERO? FWC-FLAG \?CND28 + COLOR FG,BG +?CND28: ICALL1 END-CHANGE-NAME + RTRUE +?CCL20: EQUAL? CHR,DELETE-KEY,BACK-SPACE,LEFT-ARROW \?CCL31 + ZERO? OFF \?CCL34 + SOUND 1 + JUMP ?PRG16 +?CCL34: ZERO? FWC-FLAG \?CCL36 + DEC 'OFF + ZERO? OFF \?CCL39 + ICALL GCURSET,LN,COL + ERASE NAME-WIDTH-PIX + JUMP ?PRG16 +?CCL39: DIROUT 3,CENTER-TABLE + PRINTT TBL,OFF + DIROUT -3 + CALL GPOS,LN,CHRV >?TMP1 + CALL GPOS,COL,CHRH >?TMP2 + GET 0,24 + ADD ?TMP2,STACK + CURSET ?TMP1,STACK + GET 0,24 + SUB NAME-WIDTH-PIX,STACK + ERASE STACK + JUMP ?PRG16 +?CCL36: ICALL GCURSET,LN,COL + PRINTC 45 + DEC 'COL + ICALL GCURSET,LN,COL + PRINTC 45 + DEC 'OFF + ICALL GCURSET,LN,COL + JUMP ?PRG16 +?CCL31: LESS? CHR,65 /?PRD43 + GRTR? CHR,90 \?CTR40 +?PRD43: LESS? CHR,97 /?CCL41 + GRTR? CHR,122 /?CCL41 +?CTR40: EQUAL? OFF,MAX \?CCL50 + SOUND 1 + JUMP ?PRG16 +?CCL50: ZERO? OFF \?CCL52 + LESS? CHR,97 /?CND53 + GRTR? CHR,122 /?CND53 + SUB CHR,32 >CHR +?CND53: SET 'KBD,CHR + JUMP ?CND48 +?CCL52: GRTR? OFF,0 \?CND48 + LESS? CHR,65 /?CND48 + GRTR? CHR,90 /?CND48 + ADD CHR,32 >CHR +?CND48: PUTB TBL,OFF,CHR + INC 'OFF + PRINTC CHR + ZERO? FWC-FLAG /?PRG16 + INC 'COL + ICALL GCURSET,LN,COL + JUMP ?PRG16 +?CCL41: SOUND 1 + JUMP ?PRG16 + + + .FUNCT END-CHANGE-NAME:ANY:0:0,FOO + CALL1 APPLE2? + ZERO? STACK \?CND1 + ZERO? FONT3-FLAG \?CND3 + HLIGHT H-NORMAL +?CND3: ZERO? FWC-FLAG \?CND1 + FONT 1 >FOO +?CND1: CALL2 SELECT-SCREEN,TEXT-WINDOW + RSTACK + + .ENDSEG + + .ENDI diff --git a/commands.zil b/commands.zil new file mode 100644 index 0000000..82043dd --- /dev/null +++ b/commands.zil @@ -0,0 +1,775 @@ +"COMMANDS for + JOURNEY + (c) Copyright 1988, 1989 Infocom, Inc. All Rights Reserved." + + + +;"In command names, - (dash) becomes space with capitalized next word, + ' (quote) is kept as is, and + (plus) means capitalize next word + withOUT a space (only used in stupid, fucking AppleII abbreviations...)" + +)) + + ) + (<=? .STR "CANCEL"> + ) + (<=? .STR "GONE"> + ) + (<=? .STR "BUSY"> + ) + (<=? .STR "ILL"> + ) + (> + > + .CHR) + (<==? .CHR !\-> + + ) + (<==? .CHR !\'> + .CHR) + (<==? .CHR !\+> + + ) + (T + + 32>>)>> + .CNM>> + +) (ANM <>)) + + >> + > + >) + (T + >)> + > + + + ) + (T + >> + >> + ) + ( ATOM> + >) + (T + >> + !.LST>>)>)> + > + + )) + + ) + (<==? .CHR !\-> + ) + (<==? .CHR !\'> + .CHR) + (<==? .CHR !\+> + ) + (T + 32>>)>> + .SPN> + .ACT + .OBJ + + 8) + ( + ;"Added 3/15" + 2) + (T + <1 .SPN> ;"For KBD input")> + + ;"Damned special case for abbreviation..." + "[hurt]") + (.ANM + >) + (T <>)> + >>>> + + + + + + + + + + + + + + + + + + + + () + > + + + + + + + + + + + + () + + + + ) + (T )> + + + + > + + + + + + + + + + + + + > + +> + + + + )> + > + +) "AUX" F CNT) + > + + > + ) + ( + >)> + >>> + + + + + + ) + (T + + )> + > + +> + + + + > + ) + (T + )>> + +> + + + + + ) + (T + )> + > + + + + >>>> + +> + + > + ) + (> + > + + >>> + >)> + >>> + + + + > + ) + ( + )> + > + + + + + > + + + > + + + > + ) + ( + ) + ( + ) + ( + )>> + + + + + + + + + + + + + + + + + + + ("OPTIONAL" (UPD? T) "AUX" F) + + )> + + > + )> + )> + > + + + )> + >> + + )> + )> + + + )> + ) + ( + >) + (T + ) + (T )> + + > + + > )>)>)>>> + + () > + + + + + + + + () + + > + + () + + > + + + +> + + ) + (T + )>> + + + + + ) + (T + )> + > + +> + + + + + + + + + + + + + + () + + > + + + )> + + )> + > + + () + + ) + (T + )> + + + + ) + (T + )> + + > + > + + + + +; + + + 1> + + > + + ("OPTIONAL" (CAN? T) "AUX" SV) + ;"Added 5/12 to fix apple save/restore screen fuckup" + ; + )> + + + ; "Otherwise interpreter asking for save file will end up + stuck to text." + )> + > + + + + + ) + ( + + + ) + (T + )> + + + )> + 1> + ;"Interpreter was scripting..." + + 512> + ) + (T + >)>) + (T + >)> + ) + (T + + )> + + )> + > + + ("OPTIONAL" (CAN? T) "AUX" (FLG )) + ;"Added 5/12 to fix apple save/restore screen fuckup; changed 5/24" + ; + )> + ;"Before RESTOREing, save state of D-S-I in bit 9 of FLAGS word..." + >) + (T + ;"Should be changed" + >)> + + + ) + (T + + )> + + )> + > + +> + +> + +> + +> + +> + + + + >> + +> +> + + ("OPTIONAL" (RM ,GAME-ROOM) "AUX" T) + + T <>> + + > + > + + + + () + > + + () + + > + + () + T <>> + > + + + >)>)> + + () + 1>> + ) + (T + > + )> + T <>> + > + + () + + + + + + + + > + + () + + + + ) + (T + )> + > + + () + > + + > + + () + T <>> + > + + () + + > + + + > + + () + + + + + > + + + + () + + > + + + + ("OPTIONAL" (RT? <>)) + <> <>> + T> + + + > + > + + + ) + (T )>> + + + > + +> + +> +> + + + +
+
+
+
+
+
+
>> + +> + > + > .MAX> + ;"None matched..." + ) + (T + > + .LEN> + ;"Only check if same length..." + > + + > + + ;"It is illegal..." + ) + ( + >> + ;"Unmatched..." + )>>)>)>>> + + + ("AUX" (OFF 0) CHR LN (COL ,NAME-COLUMN) TBL (CNT 0) MAX KBD + FG BG) + + + ) + (T + )> + + + > + > + >) + ;( + >)> + > 1>> + .COL> + + + ) + (T + )> + > .MAX> + ) + (T + )>>)> + + > + > 13> + + + + )> + + ) + (T + + + + )> + ;"Do the change" + + + + + + + )> + + )>) + ( + + + ) + ( + > + + + ) + (T + + + + + <+ >> + >>)>) + (T + + + > + + + > + )>) + (> >> + > >>> + + + ) + ( + > + >> + >)> + ) + ( + > + >>> + >)> + + > + + > + )>) + (T )>> + + > + +> + )> + + >)>)> + > diff --git a/common.zabstr b/common.zabstr new file mode 100644 index 0000000..51c92be --- /dev/null +++ b/common.zabstr @@ -0,0 +1,43 @@ + + + +> +> +> + + + + +> + + + + + + +> + + + + + < +REMOVE-TRAVEL-COMMAND ,HERE ,GAME-COMMAND>)> >> )>>) (ACTION < +ACOND () ( )>)> + + +> + + + + + + \ No newline at end of file diff --git a/common.zap b/common.zap new file mode 100644 index 0000000..1b1c753 --- /dev/null +++ b/common.zap @@ -0,0 +1,391 @@ + + .SEGMENT "0" + + + .FUNCT SKIP-BITE-FOREST:ANY:0:0 + CRLF + CRLF + PRINTI "The warm afternoon air lifted our hearts, and we were soon marching eastward again through the towering forest. Before long, we came upon the shore of a great river." + CRLF + CRLF + PRINTI """We are nearly there,"" Praxix said, gazing ahead at the Sunset Mountain and the mysterious tower that stood precariously atop it." + CALL2 MOVE-TO,RIVER-2 + RSTACK + + + .FUNCT MASSAGE-ELVISH:ANY:1:1,MAX,TOFF,IOFF,CHR + SET 'IOFF,2 +?PRG1: DLESS? 'MAX,0 \?CCL5 + SUB IOFF,2 + PUTB E-INBUF,1,STACK + RTRUE +?CCL5: GETB E-TEMP,TOFF >CHR + EQUAL? CHR,39 /?CND6 + LESS? CHR,65 /?CCL11 + GRTR? CHR,90 /?CCL11 + ADD CHR,32 >CHR + JUMP ?CND9 +?CCL11: EQUAL? CHR,45,44 \?CND9 + SET 'CHR,32 +?CND9: PUTB E-INBUF,IOFF,CHR + ZERO? TOFF \?CND15 + LESS? CHR,97 /?CND15 + GRTR? CHR,122 /?CND15 + SUB CHR,32 >CHR +?CND15: PUTB E-TEMP,TOFF,CHR + INC 'IOFF +?CND6: INC 'TOFF + JUMP ?PRG1 + + + .FUNCT READ-ELVISH:ANY:0:1,ACT,OFF,CHR,LN,COL,TBL,CNT,MAX,FG,BG,POS,OLD-X,MAX-X,CUR-X,?TMP1 + ASSIGNED? 'ACT /?CND1 + SET 'ACT,TAG +?CND1: SET 'COL,COMMAND-OBJECT-COLUMN + SET 'MAX-X,1000 + ICALL1 TURN-ON-CURSOR + ICALL1 CLEAR-FIELDS + PUTB E-LEXV,0,20 + PUTB E-INBUF,0,50 + ZERO? FWC-FLAG \?CND3 + GET 0,17 >?TMP1 + CALL2 TEXT-WIDTH,STR?210 + SUB ?TMP1,STACK >MAX-X +?CND3: SUB SCREEN-WIDTH,COMMAND-OBJECT-COLUMN + SUB STACK,2 >MAX + ICALL2 SELECT-SCREEN,COMMAND-WINDOW + CALL2 PARTY-PCM,ACT + ADD COMMAND-START-LINE,STACK + SUB STACK,1 >LN + ICALL GCURSET,LN,CHR-COMMAND-COLUMN + PRINTI "says..." + ZERO? FWC-FLAG \?CND5 + WINGET -3,11 >FG + SHIFT FG,-8 >BG + BAND FG,255 >FG +?CND5: ICALL GCURSET,LN,COL + ZERO? FWC-FLAG \?PRG10 + CURGET CURGET-TABLE + GET CURGET-TABLE,1 >POS + SET 'CUR-X,POS + COLOR BG,FG + ERASE COMMAND-WIDTH-PIX + JUMP ?CND7 +?PRG10: IGRTR? 'CNT,MAX /?REP11 + PRINTC 95 + JUMP ?PRG10 +?REP11: ICALL GCURSET,LN,COL +?CND7: SET 'TBL,E-TEMP +?PRG15: INPUT 1 >CHR + EQUAL? CHR,13 \?CCL19 + ZERO? FWC-FLAG \?CND20 + COLOR FG,BG + CALL GPOS,LN,CHRV + CURSET STACK,RIGHT-COLUMN-LEFT-EDGE + ERASE RIGHT-COLUMN-WIDTH +?CND20: SUB COMMAND-START-LINE,1 + ICALL2 REFRESH-CHARACTER-COMMAND-AREA,STACK + ICALL1 TURN-OFF-CURSOR + SET 'UPDATE-FLAG,TRUE-VALUE + ICALL2 SELECT-SCREEN,TEXT-WINDOW + ZERO? OFF /FALSE + ICALL2 MASSAGE-ELVISH,OFF + SET 'E-TEMP-LEN,OFF + LEX E-INBUF,E-LEXV + GETB E-LEXV,1 + ZERO? STACK /FALSE + EQUAL? ACT,PRAXIX,BERGON /TRUE + ICALL1 PARSE-ELVISH + RTRUE +?CCL19: EQUAL? CHR,DELETE-KEY,BACK-SPACE,LEFT-ARROW \?CCL31 + ZERO? OFF \?CCL34 + SOUND 1 + JUMP ?PRG15 +?CCL34: ZERO? FWC-FLAG \?CCL36 + DEC 'OFF + ZERO? OFF \?CCL39 + CALL GPOS,LN,CHRV + CURSET STACK,POS + SET 'CUR-X,POS + ERASE COMMAND-WIDTH-PIX + JUMP ?PRG15 +?CCL39: DIROUT 3,CENTER-TABLE + PRINTT TBL,OFF + DIROUT -3 + GET 0,24 + ADD POS,STACK >OLD-X + CALL GPOS,LN,CHRV + CURSET STACK,OLD-X + SUB CUR-X,OLD-X + GRTR? STACK,1 /?CCL42 + ERASE 2 + JUMP ?CND40 +?CCL42: SUB CUR-X,OLD-X + ERASE STACK +?CND40: SET 'CUR-X,OLD-X + JUMP ?PRG15 +?CCL36: ICALL GCURSET,LN,COL + PRINTC 95 + DEC 'COL + ICALL GCURSET,LN,COL + PRINTC 95 + DEC 'OFF + ICALL GCURSET,LN,COL + JUMP ?PRG15 +?CCL31: EQUAL? OFF,MAX /?CCL44 + CALL2 BAD-ELVISH-CHARACTER?,CHR + ZERO? STACK \?CCL44 + ZERO? FWC-FLAG \?CND43 + LESS? CUR-X,MAX-X /?CND43 +?CCL44: SOUND 1 + JUMP ?PRG15 +?CND43: PRINTC CHR + PUTB TBL,OFF,CHR + INC 'OFF + ZERO? FWC-FLAG /?CCL52 + INC 'COL + ICALL GCURSET,LN,COL + JUMP ?PRG15 +?CCL52: CURGET CURGET-TABLE + GET CURGET-TABLE,1 >CUR-X + JUMP ?PRG15 + + + .FUNCT BAD-ELVISH-CHARACTER?:ANY:1:1,CHR + LESS? CHR,65 /?CCL3 + GRTR? CHR,90 \FALSE +?CCL3: LESS? CHR,97 /?CCL7 + GRTR? CHR,122 \FALSE +?CCL7: EQUAL? CHR,32,39,45 /FALSE + EQUAL? CHR,46,44,63 /FALSE + RTRUE + + + .FUNCT MAKE-TAG-SUBGROUP:ANY:0:1,STO + ICALL2 MAKE-SUBGROUP,TAG + ZERO? STO /?CND1 + ICALL1 SAVE-TAG-OBJECTS +?CND1: CALL TRAVEL-COMMANDS,TAG,EXAMINE-COMMAND + RSTACK + + + .FUNCT RESTORE-TAG-OBJECTS:ANY:0:0 + ICALL REMOVE-ALL,SAVED-TAG-OBJECTS,INVENTORY + LOC TORCH + ZERO? STACK /TRUE + ICALL2 UPDATE-REMOVE,TORCH + RTRUE + + + .FUNCT SAVE-TAG-OBJECTS:ANY:0:0 + CALL REMOVE-ALL,INVENTORY,SAVED-TAG-OBJECTS + RSTACK + + + .FUNCT RESTORE-TAG-COMMANDS:ANY:0:0 + CALL TRAVEL-COMMANDS,TAG,PICK-UP-COMMAND,DROP-COMMAND,INVENTORY-COMMAND + RSTACK + + + .FUNCT N-DAY-TREK:ANY:1:1,NUM + ICALL2 NEXT-DAY,NUM + PRINTI "The next morning, we started the long trek back to Astrix' Tower, and I'm happy to report that we arrived there " + EQUAL? NUM,1 \?CCL3 + PRINTI "the next day" + JUMP ?CND1 +?CCL3: GET INT-STR,NUM + PRINT STACK + PRINTI " days later" +?CND1: PRINTI " without serious incident." + CRLF + CRLF + CALL1 RETURN-TO-ASTRIX-TOWER + RSTACK + + + .FUNCT RETURN-TO-ASTRIX-TOWER:ANY:0:1,FAIL,CNT + CALL1 STONE-COUNT + ADD PASS-1-STONES,STACK >CNT + ICALL2 GRAPHIC,G-ASTRIX + ZERO? FAIL /?CCL3 + PRINTI "Astrix now looked grave." + JUMP ?CND1 +?CCL3: FSET? STAIR-BOTTOM,SEEN \?CND1 + PRINTI "Astrix greeted us heartily when we returned. ""How has your journey gone? What news have you found?"" he asked." + GRTR? CNT,PASS-1-STONES \?CCL7 + CRLF + CRLF + PRINTI "We told him of our doings, and showed him the stone" + SUB CNT,PASS-1-STONES + GRTR? STACK,1 \?CND8 + PRINTC 115 +?CND8: PRINTI " we had obtained." + CRLF + CRLF + EQUAL? CNT,3 \?CCL12 + ICALL1 ASTRIX-SHOWS-STONE + RTRUE +?CCL12: PRINTI " ""This is good,"" he said, but he looked disappointed." + JUMP ?CND1 +?CCL7: CRLF + CRLF + PRINTI "We told Astrix of our adventures, but he was evidently disappointed." +?CND1: PRINTI " ""I am afraid we will need the three Stones,"" he said, ""if we are to defeat the Enemy.""" + CRLF + CRLF + PRINTI """Three stones?"" I said, quizzically, ""You said there were four Sisters?""" + CRLF + CRLF + PRINTI """And so there are,"" Astrix said, holding out a fiery red stone. ""This is the Wizard Stone! I had hoped it would be of use in our war against the " + PRINT BAD-GUY + PRINTI ".""" + CRLF + CRLF + CALL1 PART-ONE-BAD-ENDING + RSTACK + + + .FUNCT PART-ONE-BAD-ENDING:ANY:0:1,ONE? + PRINTI """I fear we are now without hope." + ZERO? ONE? /?CND1 + PRINTI " The Anvil is beyond our grasp!" +?CND1: PRINTI " Get back to your lands that you may join your families before the Storm arrives!""" + CRLF + CRLF + PRINTI "And then, from the north, came a mocking laugh carried on an icy wind. We covered our ears, but Astrix ran to his high balcony and cursed the " + PRINT BAD-GUY + PRINTI " in the languages of old. But the laugh was not stilled; and Astrix, overcome by a great madness, leapt from his great tower and plunged to his death...." + ICALL2 GRAPHIC,G-ASTRIX-LEAPS + CALL1 BAD-ENDING + RSTACK + + + .FUNCT ENDING:ANY:0:0 + PRINTI "[The End]" + CRLF + ICALL1 CLEAR-SUBGROUP + ICALL UPDATE-FCLEAR,TAG,SHADOW + SET 'SUBGROUP-MODE,TRUE-VALUE + CALL2 MOVE-TO,ENDING-ROOM + RSTACK + + + .FUNCT ANONF-4:ANY:0:0 + ZERO? GAME-WON? \?CND1 + ICALL REMOVE-TRAVEL-COMMAND,HERE,GAME-COMMAND +?CND1: ZERO? GAME-WON? \FALSE + FIRST? HINTS /FALSE + CALL REMOVE-TRAVEL-COMMAND,HERE,MUSINGS-COMMAND + RSTACK + + + .FUNCT ANONF-5:ANY:0:0 + EQUAL? ACTION,RESTORE-COMMAND \FALSE + CALL2 V-RESTORE,FALSE-VALUE + RSTACK + + + .FUNCT KILLED-OFF:ANY:1:1,CHR,TMP + ICALL2 PARTY-REMOVE,CHR + CALL ADD-TO-LTABLE,KILLED-TBL,CHR + RSTACK + + + .FUNCT ASTRIX-SHOWS-STONE:ANY:0:0 + ICALL GRAPHIC,FALSE-VALUE,G-FOUR-STONES,BOTTOM-LEFT + ICALL UPDATE-FCLEAR,WEBBA-MAP,DONT-DROP + PRINTI "As Astrix took the three stones, it seemed they were bathed in a warm red light, as if from a glowing ember. ""I have some surprises of my own,"" he said, and revealed to us the glowing Wizard Stone, which he had long possessed. ""It is beautiful, is it not, " + ICALL1 WPRINTTAG + PRINTI "? Not since the day it was cut from the living earth has such a sight been witnessed!""" + CRLF + CRLF + GRTR? PARTY-MAX,3 \?CCL3 + FSET? BERGON,IN-PARTY \?CCL3 + PRINTI "Astrix turned silent and stared into the glowing Stones. When, at last, the trance was broken, he spoke again. ""The Two are revealed to me; one lies deep within the earth, the other in an Elvish place - very old, and long forgotten. More than that, I cannot say.""" + CRLF + CRLF + EQUAL? PARTY-MAX,5 \?CND6 + ICALL2 PARTY-REMOVE,MINAR + PRINTI "Minar now spoke. ""I am grateful that you have allowed me to journey with you to this place,"" he began, ""but I must return now to the plains, for there is much to be done. At the least, I shall report to the people on your safe arrival at the Sunrise Tower! Good luck to you all; perhaps our paths shall cross again."" And, though we tried to persuade him otherwise, Minar turned and left Astrix' high tower and started on the lonely road toward home." + CRLF + CRLF +?CND6: CALL1 START-PART-TWO + RSTACK +?CCL3: PRINTI """Yes, you have all done well, but perhaps not well enough, for you have lost enough of your party that the search for the remaining Stones is pointless. For it is told in Legend that Five shall unite the Six Stones which shall lead them to the Anvil.""" + CRLF + CRLF + CALL1 PART-ONE-BAD-ENDING + RSTACK + + + .FUNCT BAD-ENDING:ANY:0:0 + ICALL1 DIVIDER + PRINT I-SIT-ALONE + CRLF + CRLF + CALL1 ENDING + RSTACK + + + .FUNCT PART-TWO-TOO-FEW:ANY:0:0 + PRINTI "Only Praxix and I were left, and our only consolation was that the terrain was familiar; we were only a few miles below the falls we had seen earlier on our journey, not far from the Sunrise Mountain. And so we returned to Astrix; his face was grim." + IN? SPIRIT-STONE,INVENTORY \?CND1 + CRLF + CRLF + PRINTI """It is good that you have found the fifth Stone, but your party has been devastated,"" he said. " +?CND1: CALL1 PART-ONE-BAD-ENDING + RSTACK + + + .FUNCT PART-TWO-ENDING:ANY:0:0 + ICALL2 GRAPHIC,G-ASTRIX + CRLF + CRLF + PRINTI "Astrix, pleased at our return, sat impassively as we gave a detailed account of our adventures. When we finished, he expressed his " + IN? SPIRIT-STONE,INVENTORY \?CCL3 + IN? SIXTH-STONE,INVENTORY \?CCL3 + PRINTI "delight that we had found the Two stones." + CRLF + CRLF + LESS? PARTY-MAX,5 \?CCL8 + PRINTI """But this is not enough,"" Astrix said. ""The last stone, the Anvil, will be the most difficult to obtain, and the Legend says that the Five shall, having united the Six Stones, be led to the Anvil. Alas that you have come so far only to be defeated at the end!""" + CRLF + CRLF + CALL2 PART-ONE-BAD-ENDING,TRUE-VALUE + RSTACK +?CCL8: PRINTI """I believe, for the first time, that we may be able to end the Darkness that comes from the north,"" Astrix said. ""The Sisters we have, and the Two; one last task awaits you!""" + CRLF + CRLF + CALL2 MOVE-TO,THREE-CONNECTOR + RSTACK +?CCL3: PRINTI "disappointment that we had not fared better." + CRLF + CRLF + IN? SPIRIT-STONE,INVENTORY /?CTR10 + IN? SIXTH-STONE,INVENTORY \?CCL11 +?CTR10: PRINTI """You have done well to find even one of the Two, but I fear it is not" + JUMP ?CND9 +?CCL11: PRINTI """You have failed in bringing back the Two; even had you brought one of them, I fear it would not be" +?CND9: PRINTI " enough,"" Astrix said. " + CALL1 PART-ONE-BAD-ENDING + RSTACK + + + .FUNCT TELL-WITH-COMMAS:ANY:1:1,TBL,CNT,OFF,OBJ + GET TBL,0 >CNT + SET 'OFF,1 +?PRG1: PRINTC 32 + GET TBL,OFF >OBJ + ICALL2 WPRINTD,OBJ + EQUAL? CNT,1 /TRUE + EQUAL? CNT,2 \?CCL7 + PRINTI " and" + JUMP ?CND3 +?CCL7: PRINTC 44 +?CND3: DEC 'CNT + INC 'OFF + JUMP ?PRG1 + + .ENDSEG + + .ENDI diff --git a/common.zil b/common.zil new file mode 100644 index 0000000..729bf2d --- /dev/null +++ b/common.zil @@ -0,0 +1,403 @@ +"COMMON for + JOURNEY + (c) Copyright 1988, 1989 Infocom, Inc. All Rights Reserved." + + + + + + > + +> +> +> + + +> 0> + > + ) + (T + > + T) + (T + > + >> + >) + ( + )> + ; "Lowercase for LEX" + + + ; "But uppercase first letter ONLY in E-TEMP, + for later display." + + > + >)>)> + + >)> + >)>>> + + + + + + + ; "Don't let the loser type off the screen" + >>)> + 2>> + + > 1>> + + + + > + > + >) + ;( + >)> + + + + > + + + ) + (T + > .MAX> + ) + (T + )>> + )> + + > 13> + + + ; "Make sure we don't leave any crap in the + right-hand column" + ,RIGHT-COLUMN-LEFT-EDGE> + ) + ;( + >)> + > + + + + + ) + (T + ;"Do the change" + + + + > + ) + ( + ) + (T + + )>)>) + ( + + + ) + ( + > + + .POS> + + ) + (T + + + + ;"Get width of what's now in buffer" + >> + ;"Hence OLD-X is new X position" + .OLD-X> + 1> + ) + (T + >)> + ;"Hence erase a few pixels" + )>) + (T + + + > + + + > + )>) + (T + + + + >> + + )> + + + > + > + ) + (T + + >)>)>> + ; + >)> + + > + +> + >> + ) + (> + >> + ) + ( + > + ) + (T + )>> + +> + +)) + + )> + > + + + )> + > + +> + + + +> + + + + ) + (T + > + )> + + > + +> + +) + "AUX" (CNT <+ ,PASS-1-STONES >)) + + ) + ( + + + + 1> + )> + + + + ) + (T + )>) + (T + )>)> + + + + > + +)) + + )> + + + + > + + + + + + + + > + + + )> + >> + )>>) + (ACTION + >)>)> + +> + + + > + + ,G-FOUR-STONES ,BOTTOM-LEFT> + + + + > + + + + )> + ) + (T + + )>> + + + + > + + + + ;"??" + )> + > + + + + + > + + + + ) + (T + + )>) + (T + + + > + ) + (T + )> + + )>> + +) (OFF 1) OBJ) + + > + + ) + ( + ) + (T + )> + > + >>> \ No newline at end of file diff --git a/controls.zabstr b/controls.zabstr new file mode 100644 index 0000000..ed1bdd7 --- /dev/null +++ b/controls.zabstr @@ -0,0 +1,17 @@ + + + + + + + + + + + +> +> + +> +> \ No newline at end of file diff --git a/controls.zap b/controls.zap new file mode 100644 index 0000000..3445c49 --- /dev/null +++ b/controls.zap @@ -0,0 +1,39 @@ + + .SEGMENT "0" + + + .FUNCT TELL-GAME-ID:ANY:0:0,CNT + SET 'CNT,17 + PICINF 0,PICINF-TBL /?BOGUS1 +?BOGUS1: PRINTI "Release " + GET 0,1 + BAND STACK,2047 + PRINTN STACK + PRINTI " / Graphics " + GET PICINF-TBL,1 + PRINTN STACK + PRINTI " / Serial number " +?PRG2: IGRTR? 'CNT,23 /?REP3 + GETB 0,CNT + PRINTC STACK + JUMP ?PRG2 +?REP3: PRINTI " / " + GETB 0,30 + GET MACHINES,STACK + PRINT STACK + PRINTI " Interpreter version " + GETB 0,0 + PRINTN STACK + PRINTC 46 + GETB 0,31 + PRINTN STACK + RTRUE + + + .FUNCT APPLE2?:ANY:0:0 + EQUAL? INTERPRETER,INT-2E,INT-2C,INT-2GS /TRUE + RFALSE + + .ENDSEG + + .ENDI diff --git a/controls.zil b/controls.zil new file mode 100644 index 0000000..31fbb31 --- /dev/null +++ b/controls.zil @@ -0,0 +1,53 @@ +"CONTROLS for + JOURNEY + (c) Copyright 1988 Infocom, Inc. All Rights Reserved." + + + + + + + *3777*> + " / Graphics " N + " / Serial number "> + > 23> + ) + (T + >)>> + + > " Interpreter version " + N "." N >> + + + + + + + + +> + +> + +> + + +> +> + + + + \ No newline at end of file diff --git a/dwarves.zabstr b/dwarves.zabstr new file mode 100644 index 0000000..f7f9532 --- /dev/null +++ b/dwarves.zabstr @@ -0,0 +1,370 @@ + + + + + + + >) (TEMP 0)> + + < +UPDATE-MOVE ,STORY-TOWERS ,HURTH-STORIES> )>)> + +)) > < +CRLF>)> < +FSET? ,ESHER ,IN-PARTY> > )> ) ( > > > > ) (T < +DWM-HEAR>)>) (T )>) ( > < +CRLF>) (T )>)> < +COND (,DWM-FACING > >) (T > >)> ) ( > >) (T >)> ) (< +EQUAL? .DF 1> )> ) ( )> ) ( ) (
< +TABLE 0 0 0>
>> +> +> + + + + + + + +> + + +
>> +> +> + + + + + +> + + T> + T> + + T> + T> + + + + + + + + + + + + +> +> +> +> +> + + + + + + + + + + + + + + + + + + +> + + + + + + + + + +> +> + + + + + + + + + + +> + + + + + + + +> + +> + + + + + + + + + + + + +> + + +> + + + + + + + + + + + + + + + + + + + + + + + + + +> +> + + + + + + + \ No newline at end of file diff --git a/input.zap b/input.zap new file mode 100644 index 0000000..c42f1a5 --- /dev/null +++ b/input.zap @@ -0,0 +1,2139 @@ + + .SEGMENT "0" + + + .FUNCT NEXT-DAY:ANY:0:1,AMT + ASSIGNED? 'AMT /?CND1 + SET 'AMT,1 +?CND1: GRTR? TOP-SCREEN-LINE,0 /TRUE + ICALL2 SELECT-SCREEN,COMMAND-WINDOW + ADD DAY,AMT >DAY + SUB SCREEN-WIDTH,10 + ICALL GCURSET,1,STACK + HLIGHT H-INVERSE + PRINTN DAY + EQUAL? DAY,3,23,33 \?CCL7 + PRINTI "rd" + JUMP ?CND5 +?CCL7: EQUAL? DAY,2,22,32 \?CCL9 + PRINTI "nd" + JUMP ?CND5 +?CCL9: EQUAL? DAY,1,21,31 \?CCL11 + PRINTI "st" + JUMP ?CND5 +?CCL11: PRINTI "th" +?CND5: PRINTI " Day" + HLIGHT H-NORMAL + CALL2 SELECT-SCREEN,TEXT-WINDOW + RSTACK + + + .FUNCT FILL-CHARACTER-TBL:ANY:0:0,OFF,CHR,TBLI,TBLC,ICNT,CCNT,CMD + SET 'UPDATE-FLAG,FALSE-VALUE + EQUAL? PARTY-MODE,FIGHT-MODE \?CND1 + ZERO? MODE-ENTRANCE-FLAG /TRUE +?CND1: SET 'MODE-ENTRANCE-FLAG,FALSE-VALUE +?PRG5: IGRTR? 'OFF,5 /TRUE + GET PARTY,OFF >CHR + ZERO? CHR /?CCL11 + FSET? CHR,BUSY /?PRG5 +?CCL11: GRTR? OFF,PARTY-MAX /?CTR14 + ZERO? SUBGROUP-MODE /?CCL15 + FSET? CHR,SUBGROUP /?CCL15 + FSET? CHR,SHADOW /?CCL15 +?CTR14: GET CHARACTER-INPUT-TBL,OFF + COPYT NUL-CHARACTER-INPUT,STACK,6 + JUMP ?PRG5 +?CCL15: SET 'CCNT,-1 + SET 'ICNT,-1 + GETPT CHR,PARTY-MODE-PROPERTY >TBLC + GET CHARACTER-INPUT-TBL,OFF >TBLI +?PRG21: IGRTR? 'CCNT,2 /?PRG30 + GET TBLC,CCNT + CALL VALID-OPTION,STACK,CHR >CMD + EQUAL? PARTY-MODE,FIGHT-MODE /?CCL27 + EQUAL? CMD,NUL-COMMAND /?PRG21 +?CCL27: INC 'ICNT + PUT TBLI,ICNT,CMD + JUMP ?PRG21 +?PRG30: IGRTR? 'ICNT,2 /?PRG5 + PUT TBLI,ICNT,NUL-COMMAND + JUMP ?PRG30 + + + .FUNCT VALID-OPTION:ANY:2:2,CMD,CHR,OFCN + EQUAL? CMD,GET-ADVICE-COMMAND \?CCL3 + EQUAL? PARTY-MODE,OPTION-MODE /?CCL3 + FSET? HERE,ADVISE /?CCL3 + FSET? SCENE-OBJECT,ADVISE /?CCL3 + RETURN NUL-COMMAND +?CCL3: EQUAL? CMD,MIX-COMMAND \?CCL9 + FSET? REAGENT,SOLVED /?CCL9 + RETURN NUL-COMMAND +?CCL9: EQUAL? CMD,DROP-COMMAND,SELL-COMMAND \?CCL13 + FSET? HERE,DONT-DROP \?CCL13 + RETURN NUL-COMMAND +?CCL13: EQUAL? CMD,SCOUT-COMMAND,LOOK-AROUND-COMMAND \?CCL17 + EQUAL? PARTY-MODE,OPTION-MODE /?CCL17 + EQUAL? HERE,MINE-HOLE \?CCL22 + GETP HERE,P?TEMP + EQUAL? CHR,STACK \?CCL22 + RETURN CMD +?CCL22: FSET? HERE,DONT-SCOUT /?CTR25 + FSET? SCENE-OBJECT,DONT-SCOUT \?CCL26 +?CTR25: RETURN NUL-COMMAND +?CCL26: RETURN CMD +?CCL17: EQUAL? CMD,INVENTORY-COMMAND \?CCL30 + FSET? HERE,INVENTORIED \?CCL30 + RETURN NUL-COMMAND +?CCL30: EQUAL? CMD,CAST-COMMAND,USE-MIX-COMMAND,MIX-COMMAND \?CCL34 + EQUAL? PARTY-MODE,OPTION-MODE,FIGHT-MODE /?CCL34 + FSET? HERE,DONT-CAST \?CCL34 + RETURN NUL-COMMAND +?CCL34: EQUAL? CMD,CAST-COMMAND \?CCL39 + FSET? SCENE-OBJECT,DONT-CAST \?CCL39 + RETURN NUL-COMMAND +?CCL39: EQUAL? CMD,EXAMINE-COMMAND,INVENTORY-COMMAND,PICK-UP-COMMAND \?CCL43 + FSET? HERE,UNDERGROUND \?CCL43 + EQUAL? HERE,SUNSET-TOWER /?CCL43 + FSET? PRAXIX,LIT /?CCL43 + FSET? HERE,LIT /?CCL43 + FSET? HURTH,IN-PARTY /?CCL43 + RETURN NUL-COMMAND +?CCL43: GET CMD,COMMAND-OBJECT >OFCN + ZERO? OFCN \?CCL51 + RETURN CMD +?CCL51: PUT O-TABLE,0,0 + SET 'ACTOR,CHR + ICALL OFCN + GET O-TABLE,0 + ZERO? STACK \?CCL54 + RETURN NUL-COMMAND +?CCL54: RETURN CMD + + + .FUNCT MODE:ANY:1:3,M,INIT?,DUF?,TBL,OFF,?TMP1 + SET 'MODE-ENTRANCE-FLAG,TRUE-VALUE + SET 'PARTY-MODE,M + GETP M,P?ACTION >PARTY-MODE-PROPERTY + ZERO? DUF? \?CCL3 + SET 'UPDATE-FLAG,TRUE-VALUE + JUMP ?CND1 +?CCL3: SET 'UPDATE-FLAG,FALSE-VALUE +?CND1: GETPT M,P?MODE-COMMANDS >TBL + ZERO? TBL /?CCL6 + ADD PARTY-COMMANDS,2 >?TMP1 + PTSIZE TBL + COPYT TBL,?TMP1,STACK + JUMP ?CND4 +?CCL6: GETPT HERE,P?TRAVEL-COMMANDS >TBL + ADD PARTY-COMMANDS,2 + PTSIZE TBL >OFF + COPYT TBL,STACK,OFF + LESS? OFF,8 \?CND4 + PUT PARTY-COMMANDS,4,NUL-COMMAND +?CND4: ZERO? INIT? /?CCL11 + CALL2 PRINT-COLUMNS,TRUE-VALUE + RSTACK +?CCL11: SET 'PUPDATE-FLAG,TRUE-VALUE + RETURN PUPDATE-FLAG + + + .FUNCT INIT-SCREEN:ANY:0:0,LN,POS,F,IC-WID,OLN,WIDTH,?TMP3,?TMP2,?TMP1 + EQUAL? INTERPRETER,INT-PC \?CCL3 + SET 'BORDER-FLAG,FALSE-VALUE + SET 'FONT3-FLAG,FALSE-VALUE + SET 'FWC-FLAG,FALSE-VALUE + SET 'BLACK-PICTURE-BORDER,FALSE-VALUE + JUMP ?CND1 +?CCL3: EQUAL? INTERPRETER,INT-MAC \?CCL5 + SET 'BORDER-FLAG,FALSE-VALUE + SET 'FONT3-FLAG,TRUE-VALUE + SET 'FWC-FLAG,TRUE-VALUE + SET 'BLACK-PICTURE-BORDER,TRUE-VALUE + JUMP ?CND1 +?CCL5: EQUAL? INTERPRETER,INT-AMIGA \?CCL7 + SET 'BORDER-FLAG,TRUE-VALUE + SET 'FONT3-FLAG,TRUE-VALUE + SET 'FWC-FLAG,TRUE-VALUE + SET 'BLACK-PICTURE-BORDER,TRUE-VALUE + JUMP ?CND1 +?CCL7: CALL1 APPLE2? + ZERO? STACK /?CND1 + SET 'BORDER-FLAG,FALSE-VALUE + SET 'FONT3-FLAG,FALSE-VALUE + SET 'FWC-FLAG,FALSE-VALUE + SET 'BLACK-PICTURE-BORDER,TRUE-VALUE +?CND1: ZERO? FWC-FLAG /?CND9 + FONT 4 >F +?CND9: GETB 0,38 >CHRV + GETB 0,39 >CHRH + ZERO? FWC-FLAG /?CND11 + FONT F +?CND11: GET 0,17 + DIV STACK,CHRH >SCREEN-WIDTH + GET 0,18 + DIV STACK,CHRV >SCREEN-HEIGHT + ZERO? BORDER-FLAG \?CCL15 + SET 'TOP-SCREEN-LINE,1 + SUB SCREEN-HEIGHT,4 >COMMAND-START-LINE + JUMP ?CND13 +?CCL15: SET 'TOP-SCREEN-LINE,2 + SUB SCREEN-HEIGHT,5 >COMMAND-START-LINE +?CND13: DIV SCREEN-WIDTH,5 >COMMAND-WIDTH + MUL COMMAND-WIDTH,4 + SUB SCREEN-WIDTH,STACK >NAME-WIDTH + CALL1 APPLE2? + ZERO? STACK /?CND16 + SET 'PARTY-COMMAND-COLUMN,1 +?CND16: ADD PARTY-COMMAND-COLUMN,COMMAND-WIDTH >NAME-COLUMN + ADD NAME-COLUMN,NAME-WIDTH >CHR-COMMAND-COLUMN + ADD CHR-COMMAND-COLUMN,COMMAND-WIDTH >COMMAND-OBJECT-COLUMN + MOUSE-LIMIT -1 + CALL QSET?,START-LOC,SEEN + ZERO? STACK \?CND18 + PICINF G-BOOT-SCREEN,PICINF-TBL \?CND18 + CLEAR -1 + DISPLAY G-BOOT-SCREEN,1,1 + INPUT 1 +?CND18: CLEAR -1 + MUL SCREEN-HEIGHT,CHRV + SPLIT STACK + ICALL1 SETUP-WINDOWS + ICALL2 SELECT-SCREEN,COMMAND-WINDOW + ZERO? FONT3-FLAG /?CND22 + ICALL2 CHANGE-FONT,4 +?CND22: ZERO? BORDER-FLAG /?CND24 + ZERO? FONT3-FLAG /?CCL28 + ICALL FONT3-LINE,1,H-LINE,47,48 + JUMP ?CND26 +?CCL28: HLIGHT H-INVERSE + ICALL GCURSET,1,1 + SUB SCREEN-WIDTH,1 + PRINTT WPRINT-EBUF,STACK + ICALL GCURSET,1,SCREEN-WIDTH + PRINTC 32 +?CND26: DIV SCREEN-WIDTH,2 + SUB STACK,4 >F + EQUAL? INTERPRETER,INT-AMIGA \?CND29 + ADD F,2 >F +?CND29: ICALL GCURSET,1,F + PRINTI "JOURNEY" + ZERO? FONT3-FLAG \?CND24 + HLIGHT H-NORMAL +?CND24: SET 'LN,TOP-SCREEN-LINE +?PRG33: SUB COMMAND-START-LINE,1 + EQUAL? LN,STACK /?REP34 + ZERO? BORDER-FLAG \?CCL40 + SUB TEXT-WINDOW-LEFT,1 + ICALL GCURSET,LN,STACK + ZERO? FONT3-FLAG /?CCL43 + CALL2 CHANGE-FONT,3 >F + PRINTC THIN-V-LINE + CALL2 CHANGE-FONT,4 >F + JUMP ?CND38 +?CCL43: HLIGHT H-INVERSE + PRINTC 32 + HLIGHT H-NORMAL + JUMP ?CND38 +?CCL40: ZERO? FONT3-FLAG /?CCL46 + CALL2 CHANGE-FONT,3 >F + ICALL GCURSET,LN,1 + PRINTC THIN-V-LINE + SUB TEXT-WINDOW-LEFT,1 + ICALL GCURSET,LN,STACK + PRINTC THIN-V-LINE + ICALL GCURSET,LN,SCREEN-WIDTH + PRINTC 40 + CALL2 CHANGE-FONT,4 >F + JUMP ?CND38 +?CCL46: HLIGHT H-INVERSE + ZERO? FWC-FLAG \?CND47 + FONT 4 >F +?CND47: ICALL GCURSET,LN,1 + PRINTC 32 + SUB TEXT-WINDOW-LEFT,1 + ICALL GCURSET,LN,STACK + PRINTC 32 + ICALL GCURSET,LN,SCREEN-WIDTH + PRINTC 32 + ZERO? FWC-FLAG \?CND49 + FONT 1 >F +?CND49: HLIGHT H-NORMAL +?CND38: INC 'LN + JUMP ?PRG33 +?REP34: ZERO? FONT3-FLAG /?CCL53 + ZERO? BORDER-FLAG /?CCL56 + ICALL FONT3-LINE,LN,H-LINE,THIN-V-LINE,40 + JUMP ?CND51 +?CCL56: ICALL FONT3-LINE,LN,H-LINE,H-LINE,H-LINE + JUMP ?CND51 +?CCL53: ICALL GCURSET,LN,1 + ICALL1 BLANK-LINE +?CND51: SET 'OLN,LN + CALL2 REFRESH-CHARACTER-COMMAND-AREA,LN >LN + ZERO? BORDER-FLAG /?CND57 + ZERO? FONT3-FLAG /?CCL61 + ICALL FONT3-LINE,LN,38,46,49 + JUMP ?CND57 +?CCL61: ICALL GCURSET,LN,1 + ICALL1 BLANK-LINE +?CND57: ZERO? FONT3-FLAG \?CND62 + HLIGHT H-INVERSE +?CND62: CALL2 TEXT-WIDTH,STR?11 >WIDTH + CALL GPOS,NAME-COLUMN,CHRH >?TMP1 + SUB NAME-WIDTH-PIX,WIDTH + DIV STACK,2 + ADD ?TMP1,STACK >F + CALL GPOS,OLN,CHRV + CURSET STACK,F + PRINTI "The Party" + CALL2 TEXT-WIDTH,STR?12 >WIDTH + CALL GPOS,OLN,CHRV >?TMP1 + CALL GPOS,CHR-COMMAND-COLUMN,CHRH >?TMP2 + GET 0,17 >?TMP3 + CALL GPOS,CHR-COMMAND-COLUMN,CHRH + SUB ?TMP3,STACK + SUB STACK,WIDTH + DIV STACK,2 + ADD ?TMP2,STACK + CURSET ?TMP1,STACK + PRINTI "Individual Commands" + ZERO? FONT3-FLAG \?CND64 + HLIGHT H-NORMAL +?CND64: EQUAL? INTERPRETER,INT-MAC \?CND66 + MENU 3,MAC-SPECIAL-MENU /?CND66 +?CND66: CALL2 SELECT-SCREEN,TEXT-WINDOW + RSTACK + + + .FUNCT TEXT-WIDTH:ANY:1:1,STR + DIROUT 3,CENTER-TABLE + PRINT STR + DIROUT -3 + GET 0,24 + RSTACK + + + .FUNCT BLANK-LINE:ANY:0:0,FG,BG + WINGET -3,11 >FG + SHIFT FG,-8 >BG + BAND FG,255 >FG + COLOR BG,FG + ERASE 1 + COLOR FG,BG + RTRUE + + + .FUNCT FONT3-LINE:ANY:4:4,LN,CHR,L,R,F + CALL2 CHANGE-FONT,3 >F + ICALL GCURSET,LN,1 + SET 'F,0 +?PRG1: IGRTR? 'F,SCREEN-WIDTH \?CCL5 + CALL2 CHANGE-FONT,4 >F + RTRUE +?CCL5: EQUAL? F,1 \?CCL7 + PRINTC L + JUMP ?PRG1 +?CCL7: EQUAL? F,SCREEN-WIDTH \?CCL9 + ICALL GCURSET,LN,F + PRINTC R + JUMP ?PRG1 +?CCL9: PRINTC CHR + JUMP ?PRG1 + + + .FUNCT REFRESH-CHARACTER-COMMAND-AREA:ANY:1:1,LN,POS,F,START,END,TW,?TMP1 +?PRG1: ADD COMMAND-START-LINE,4 + IGRTR? 'LN,STACK \?CCL5 + GRTR? NAME-RIGHT,0 /?CCL7 + RETURN LN +?CCL7: ZERO? FWC-FLAG /?CCL10 + FONT 4 + JUMP ?CND8 +?CCL10: FONT 1 +?CND8: CALL2 TEXT-WIDTH,STR?13 + ADD 2,STACK >LONG-ARROW-WIDTH + CALL2 TEXT-WIDTH,STR?14 + ADD 2,STACK >SHORT-ARROW-WIDTH + CALL2 TEXT-WIDTH,STR?15 + ADD 2,STACK >NO-ARROW-WIDTH + RETURN LN +?CCL5: SET 'POS,1 + ICALL GCURSET,LN,POS +?PRG11: GRTR? POS,SCREEN-WIDTH \?CCL15 + ZERO? BORDER-FLAG /?PRG1 + ZERO? FONT3-FLAG /?CCL20 + CALL2 CHANGE-FONT,3 >F + ICALL GCURSET,LN,SCREEN-WIDTH + CURGET CURGET-TABLE + GET CURGET-TABLE,1 + SUB STACK,RIGHT-COLUMN-LEFT-EDGE >RIGHT-COLUMN-WIDTH + PRINTC 40 + CALL2 CHANGE-FONT,4 >F + JUMP ?PRG1 +?CCL20: CURGET CURGET-TABLE + GET CURGET-TABLE,1 + SUB STACK,RIGHT-COLUMN-LEFT-EDGE >RIGHT-COLUMN-WIDTH + ICALL2 FIXED-SPACE,H-INVERSE + JUMP ?PRG1 +?CCL15: ZERO? FONT3-FLAG /?CCL23 + EQUAL? POS,1 /?CCL26 + SUB SCREEN-WIDTH,5 + LESS? POS,STACK \?CCL26 + CALL2 CHANGE-FONT,3 >F + SUB POS,1 + ICALL GCURSET,LN,STACK + GRTR? START,0 \?CND29 + CURGET CURGET-TABLE + GET CURGET-TABLE,1 >END +?CND29: ADD COMMAND-WIDTH,1 >?TMP1 + ADD COMMAND-WIDTH,NAME-WIDTH + ADD STACK,1 + EQUAL? POS,COMMAND-WIDTH,?TMP1,STACK /?CTR32 + ADD COMMAND-WIDTH,NAME-WIDTH + EQUAL? POS,STACK \?CCL33 +?CTR32: PRINTC THICK-V-LINE + JUMP ?CND31 +?CCL33: PRINTC THIN-V-LINE +?CND31: CURGET CURGET-TABLE + GET CURGET-TABLE,1 >RIGHT-COLUMN-LEFT-EDGE + CALL2 CHANGE-FONT,4 >F + JUMP ?CND13 +?CCL26: EQUAL? POS,1 \?CND13 + ZERO? BORDER-FLAG /?CND13 + CALL2 CHANGE-FONT,3 >F + ICALL GCURSET,LN,POS + PRINTC THIN-V-LINE + GRTR? START,0 \?CND39 + CURGET CURGET-TABLE + GET CURGET-TABLE,1 >END +?CND39: CALL2 CHANGE-FONT,4 >F + JUMP ?CND13 +?CCL23: EQUAL? POS,1 /?CND13 + SUB SCREEN-WIDTH,5 + LESS? POS,STACK \?CND13 + SUB POS,1 + ICALL GCURSET,LN,STACK + GRTR? START,0 \?CND44 + CURGET CURGET-TABLE + GET CURGET-TABLE,1 >END +?CND44: ICALL2 FIXED-SPACE,H-INVERSE + CURGET CURGET-TABLE + GET CURGET-TABLE,1 >RIGHT-COLUMN-LEFT-EDGE +?CND13: GRTR? START,0 \?CND46 + ZERO? COMMAND-WIDTH-PIX \?CCL50 + SUB END,START >COMMAND-WIDTH-PIX + JUMP ?CND48 +?CCL50: SET 'NAME-RIGHT,END + CALL GPOS,NAME-COLUMN,CHRH + SUB END,STACK >NAME-WIDTH-PIX +?CND48: SET 'START,0 +?CND46: ADD 1,COMMAND-WIDTH + EQUAL? POS,COMMAND-WIDTH,STACK \?CCL53 + ZERO? NAME-WIDTH-PIX \?CND54 + CURGET CURGET-TABLE + GET CURGET-TABLE,1 >START +?CND54: ADD POS,NAME-WIDTH >POS + JUMP ?PRG11 +?CCL53: ZERO? COMMAND-WIDTH-PIX \?CND56 + ICALL GCURSET,LN,PARTY-COMMAND-COLUMN + CURGET CURGET-TABLE + GET CURGET-TABLE,1 >START +?CND56: EQUAL? POS,1 \?CCL60 + ADD POS,COMMAND-WIDTH >POS + JUMP ?PRG11 +?CCL60: ADD POS,COMMAND-WIDTH >POS + JUMP ?PRG11 + + + .FUNCT FIXED-SPACE:ANY:0:1,HL,F + ZERO? FWC-FLAG \?CND1 + FONT 4 >F +?CND1: ZERO? HL /?CND3 + HLIGHT HL +?CND3: PRINTC 32 + ZERO? HL /?CND5 + HLIGHT H-NORMAL +?CND5: ZERO? FWC-FLAG \TRUE + FONT 1 >F + RTRUE + + + .FUNCT GET-CURSOR:ANY:2:2,PCM,PCF,?TMP1 + GET CHARACTER-INPUT-TBL,PCM >?TMP1 + SUB PCF,1 + GET ?TMP1,STACK + RSTACK + + + .FUNCT ERASE-COMMAND:ANY:0:1,W,F + ASSIGNED? 'W /?CND1 + SET 'W,COMMAND-WIDTH-PIX +?CND1: ERASE W + RTRUE + + + .FUNCT BOLD-CURSOR:ANY:2:3,PCM,PCF,STR,X,Y,CMD,?TMP1 + ICALL2 SELECT-SCREEN,COMMAND-WINDOW + SUB COMMAND-START-LINE,1 + ADD STACK,PCM >Y + SUB PCF,1 + MUL COMMAND-WIDTH,STACK + ADD CHR-COMMAND-COLUMN,STACK >X + ICALL GCURSET,Y,X + ICALL1 ERASE-COMMAND + ICALL GCURSET,Y,X + ASSIGNED? 'STR \?CCL3 + PRINT STR + JUMP ?CND1 +?CCL3: GET CHARACTER-INPUT-TBL,PCM >?TMP1 + SUB PCF,1 + GET ?TMP1,STACK >CMD + EQUAL? CMD,NUL-COMMAND /?CND1 + HLIGHT H-BOLD + ICALL2 PRINT-COMMAND,CMD + HLIGHT H-NORMAL +?CND1: ICALL GCURSET,Y,X + ICALL2 SELECT-SCREEN,TEXT-WINDOW + RETURN CMD + + + .FUNCT NORMAL-ALL:ANY:1:1,PCM + ICALL NORMAL-CURSOR,PCM,1 + ICALL NORMAL-CURSOR,PCM,2 + CALL NORMAL-CURSOR,PCM,3 + RSTACK + + + .FUNCT NORMAL-CURSOR:ANY:2:3,PCM,PCF,STR,Y,X,CHR,?TMP1 + ICALL2 SELECT-SCREEN,COMMAND-WINDOW + SUB COMMAND-START-LINE,1 + ADD STACK,PCM >Y + SUB PCF,1 + MUL COMMAND-WIDTH,STACK + ADD CHR-COMMAND-COLUMN,STACK >X + ICALL GCURSET,Y,X + ICALL1 ERASE-COMMAND + ICALL GCURSET,Y,X + GET PARTY,PCM >CHR + ASSIGNED? 'STR \?CCL3 + PRINT STR + JUMP ?CND1 +?CCL3: ZERO? CHR \?CCL4 + ZERO? SUBGROUP-MODE /?CCL4 + FSET? CHR,SUBGROUP \?CND1 +?CCL4: GET CHARACTER-INPUT-TBL,PCM >?TMP1 + SUB PCF,1 + GET ?TMP1,STACK + ICALL2 PRINT-COMMAND,STACK +?CND1: CALL2 SELECT-SCREEN,TEXT-WINDOW + RSTACK + + + .FUNCT GMSLOCX:ANY:0:0 + EQUAL? CHRH,1 \?CCL3 + GET 0,27 + GET STACK,1 + RSTACK +?CCL3: GET 0,27 + GET STACK,1 + SUB STACK,1 + DIV STACK,CHRH + ADD STACK,1 + RSTACK + + + .FUNCT GMSLOCY:ANY:0:0 + EQUAL? CHRV,1 \?CCL3 + GET 0,27 + GET STACK,2 + RSTACK +?CCL3: GET 0,27 + GET STACK,2 + SUB STACK,1 + DIV STACK,CHRV + ADD STACK,1 + RSTACK + + + .FUNCT LOCATE-MOUSE:ANY:0:0,MX,MY + CALL1 GMSLOCX >MX + CALL1 GMSLOCY >MY + LESS? MY,COMMAND-START-LINE /FALSE + ADD COMMAND-START-LINE,5 + LESS? MY,STACK \FALSE + SUB COMMAND-START-LINE,1 + SUB MY,STACK + PUT MOUSETBL,0,STACK + LESS? MX,PARTY-COMMAND-COLUMN /?CCL8 + GRTR? MX,COMMAND-WIDTH /?CCL8 + PUT MOUSETBL,1,-1 + RTRUE +?CCL8: LESS? MX,CHR-COMMAND-COLUMN /FALSE + GRTR? MX,SCREEN-WIDTH /FALSE + SUB MX,CHR-COMMAND-COLUMN + ADD STACK,1 + MOD STACK,COMMAND-WIDTH + ZERO? STACK /FALSE + SUB MX,CHR-COMMAND-COLUMN + DIV STACK,COMMAND-WIDTH + ADD STACK,1 >MY + PUT MOUSETBL,1,MY + RTRUE + + + .FUNCT PARTY-INPUT:ANY:0:0,PCM,PCF,CHR,CLICK,MFLG + SET 'PCM,1 + SET 'PCF,-1 +?PRG1: ZERO? NO-DEFAULTS \?PRG5 + ICALL BOLD-PARTY-CURSOR,PCM,PCF +?PRG5: ZERO? CLICK \?CTR8 + CALL1 GETCHR >CHR + EQUAL? CHR,13 \?CCL9 + ZERO? NO-DEFAULTS \?CCL9 +?CTR8: SET 'CLICK,FALSE-VALUE + ICALL BOLD-PARTY-CURSOR,PCM,PCF + CALL PROCESS-COMMAND,PCM,PCF + ZERO? STACK /?CND14 + ICALL1 PRINT-CHARACTER-COMMANDS +?CND14: ICALL NORMAL-PARTY-CURSOR,PCM,PCF + JUMP ?PRG1 +?CCL9: EQUAL? CHR,SINGLE-CLICK,DOUBLE-CLICK,DEFAULT-CHR \?CCL17 + EQUAL? CHR,DEFAULT-CHR \?CCL20 + GET MOUSETBL,0 + LESS? STACK,0 /?PRG5 + SET 'MFLG,FALSE-VALUE + JUMP ?CND18 +?CCL20: SET 'MFLG,TRUE-VALUE +?CND18: ZERO? MFLG /?CTR24 + CALL1 LOCATE-MOUSE + ZERO? STACK /?CCL25 +?CTR24: ZERO? GAME-MODE /?CND28 + GET MOUSETBL,1 + GRTR? STACK,0 \?CND28 + SOUND 1 + JUMP ?PRG5 +?CND28: ICALL NORMAL-PARTY-CURSOR,PCM,PCF + GET MOUSETBL,0 >PCM + GET MOUSETBL,1 >PCF + GRTR? PCF,0 \?CCL34 + ICALL CHARACTER-INPUT,PCM,PCF,MFLG + SET 'CLICK,SAVED-CLICK + ZERO? CLICK /?CCL37 + SET 'PCM,SAVED-PCM + JUMP ?CND35 +?CCL37: CALL2 F-P-C,SAVED-PCM >PCM +?CND35: SET 'PCF,SAVED-PCF + JUMP ?CND32 +?CCL34: SET 'CLICK,MFLG +?CND32: ICALL BOLD-PARTY-CURSOR,PCM,PCF + JUMP ?PRG5 +?CCL25: SOUND 1 + JUMP ?PRG5 +?CCL17: ZERO? NO-DEFAULTS /?CCL39 + SOUND 1 + JUMP ?PRG5 +?CCL39: EQUAL? CHR,SPACE-BAR \?CCL41 + ZERO? GAME-MODE \?CCL41 + ICALL1 C-N-D + JUMP ?PRG5 +?CCL41: EQUAL? CHR,DOWN-ARROW \?CCL45 +?PRG46: ICALL NORMAL-PARTY-CURSOR,PCM,PCF + EQUAL? PCM,5 \?CCL50 + SET 'PCM,1 + JUMP ?CND48 +?CCL50: INC 'PCM +?CND48: CALL BOLD-PARTY-CURSOR,PCM,PCF + EQUAL? STACK,NUL-COMMAND /?PRG46 + JUMP ?PRG5 +?CCL45: EQUAL? CHR,UP-ARROW \?CCL54 +?PRG55: ICALL NORMAL-PARTY-CURSOR,PCM,PCF + EQUAL? PCM,1 \?CCL59 + SET 'PCM,5 + JUMP ?CND57 +?CCL59: DEC 'PCM +?CND57: CALL BOLD-PARTY-CURSOR,PCM,PCF + EQUAL? STACK,NUL-COMMAND /?PRG55 + JUMP ?PRG5 +?CCL54: EQUAL? CHR,LEFT-ARROW \?CCL63 + SOUND 1 + JUMP ?PRG5 +?CCL63: EQUAL? CHR,RIGHT-ARROW \?CCL65 + ZERO? GAME-MODE /?CCL68 + SOUND 1 + JUMP ?PRG5 +?CCL68: ICALL NORMAL-PARTY-CURSOR,PCM,PCF + EQUAL? PCF,-1 \?CCL71 + CALL BOLD-CURSOR,PCM,1 + EQUAL? STACK,NUL-COMMAND /?CCL74 + ICALL CHARACTER-INPUT,PCM,1 + CALL2 F-P-C,SAVED-PCM >PCM + SET 'PCF,SAVED-PCF + SET 'CLICK,SAVED-CLICK + JUMP ?CND69 +?CCL74: SOUND 1 + JUMP ?CND69 +?CCL71: INC 'PCF +?CND69: ICALL BOLD-PARTY-CURSOR,PCM,PCF + JUMP ?PRG5 +?CCL65: CALL2 PARTY-KBD-COMMAND?,CHR + ZERO? STACK /?CCL76 + ICALL NORMAL-PARTY-CURSOR,PCM,PCF + GET MOUSETBL,0 >PCM + GET MOUSETBL,1 >PCF + ICALL BOLD-PARTY-CURSOR,PCM,PCF + SET 'CLICK,TRUE-VALUE + JUMP ?PRG5 +?CCL76: SOUND 1 + JUMP ?PRG5 + + + .FUNCT F-P-C:ANY:1:1,PCM +?PRG1: GET PARTY-COMMANDS,PCM + EQUAL? STACK,NUL-COMMAND /?CCL5 + RETURN PCM +?CCL5: EQUAL? PCM,5 \?CCL7 + PRINTI "[Error 2]" + RETURN 5 +?CCL7: INC 'PCM + JUMP ?PRG1 + + + .FUNCT FIRST-PARTY:ANY:0:0,CNT +?PRG1: IGRTR? 'CNT,PARTY-MAX \?CCL5 + RETURN -1 +?CCL5: GET CHARACTER-INPUT-TBL,CNT + GET STACK,0 + EQUAL? STACK,NUL-COMMAND /?PRG1 + RETURN CNT + + + .FUNCT FIRST-SUBGROUP:ANY:0:0,CNT +?PRG1: IGRTR? 'CNT,PARTY-MAX \?CCL5 + SET 'CNT,-1 + RETURN CNT +?CCL5: GET PARTY,CNT + FSET? STACK,SUBGROUP \?PRG1 + GET CHARACTER-INPUT-TBL,CNT + GET STACK,0 + EQUAL? STACK,NUL-COMMAND /?PRG1 + RETURN CNT + + + .FUNCT PARTY-KBD-COMMAND?:ANY:1:1,CHR,OFF,MAX,CMD + SET 'OFF,1 + SET 'MAX,5 + LESS? CHR,97 /?PRG5 + GRTR? CHR,122 /?PRG5 + SUB CHR,32 >CHR +?PRG5: GRTR? OFF,MAX /FALSE + GET PARTY-COMMANDS,OFF >CMD + EQUAL? CMD,NUL-COMMAND /?CND7 + GET CMD,COMMAND-CHR + EQUAL? CHR,STACK \?CND7 + DEC 'OFF + ADD OFF,1 + PUT MOUSETBL,0,STACK + PUT MOUSETBL,1,-1 + RTRUE +?CND7: INC 'OFF + JUMP ?PRG5 + + + .FUNCT CHARACTER-KBD-COMMAND?:ANY:1:2,CHR,F,PCM,CNT,OFF,TBL,CMD + SET 'PCM,1 + LESS? CHR,97 /?PRG5 + GRTR? CHR,122 /?PRG5 + SUB CHR,32 >CHR +?PRG5: GRTR? PCM,PARTY-MAX \?CCL9 + ZERO? F /FALSE + ZERO? CNT /FALSE + EQUAL? CNT,1 \?CCL16 + SET 'UPDATE-FLAG,TRUE-VALUE + RTRUE +?CCL16: ICALL1 PRINT-CHARACTER-COMMANDS + SET 'UPDATE-FLAG,TRUE-VALUE + RETURN 3 +?CCL9: GET CHARACTER-INPUT-TBL,PCM >TBL + SET 'OFF,0 +?PRG17: GRTR? OFF,2 /?REP18 + GET TBL,OFF >CMD + EQUAL? CMD,NUL-COMMAND /?CND19 + GET CMD,COMMAND-CHR + EQUAL? CHR,STACK \?CCL24 + ZERO? F /?CND25 + INC 'CNT +?CND25: ZERO? F /?CCL28 + EQUAL? CNT,1 \?CND27 +?CCL28: PUT MOUSETBL,0,PCM + ADD OFF,1 + PUT MOUSETBL,1,STACK +?CND27: ZERO? F \?CND19 + RTRUE +?CCL24: ZERO? F /?CND19 + PUT TBL,OFF,NUL-COMMAND +?CND19: INC 'OFF + JUMP ?PRG17 +?REP18: INC 'PCM + JUMP ?PRG5 + + + .FUNCT OBJECT-KBD-COMMAND?:ANY:1:2,CHR,MP,OFF,MAX,CMD,?TMP1 + ASSIGNED? 'MP /?CND1 + SET 'MP,2 +?CND1: SET 'OFF,1 + GET O-TABLE,0 >MAX + LESS? CHR,97 /?CND3 + GRTR? CHR,122 /?CND3 + SUB CHR,32 >CHR +?CND3: EQUAL? MP,3 \?PRG9 + SET 'OFF,6 +?PRG9: GRTR? OFF,MAX /FALSE + GET O-TABLE,OFF + GETP STACK,P?KBD >?TMP1 + GET O-TABLE,OFF + GETP STACK,P?KBD2 + EQUAL? CHR,?TMP1,STACK \?CND11 + DEC 'OFF + MOD OFF,5 + ADD STACK,1 + PUT MOUSETBL,0,STACK + DIV OFF,5 + ADD STACK,2 + PUT MOUSETBL,1,STACK + RTRUE +?CND11: INC 'OFF + JUMP ?PRG9 + + + .FUNCT MENU-NO-DEFAULTS:ANY:0:0 + SET 'NO-DEFAULTS,TRUE-VALUE + PUT MAC-SPECIAL-MENU,3,MSM-DEFAULTS + PUT MOUSE-JOURNEY-MENU-TBL,2,MENU-DEFAULTS + EQUAL? INTERPRETER,INT-MAC \FALSE + MENU 3,MAC-SPECIAL-MENU /TRUE + RFALSE + + + .FUNCT MENU-DEFAULTS:ANY:0:0 + SET 'NO-DEFAULTS,FALSE-VALUE + PUT MAC-SPECIAL-MENU,3,MSM-NO-DEFAULTS + PUT MOUSE-JOURNEY-MENU-TBL,2,MENU-NO-DEFAULTS + EQUAL? INTERPRETER,INT-MAC \FALSE + MENU 3,MAC-SPECIAL-MENU /TRUE + RFALSE + + + .FUNCT MENU-ESSENCES:ANY:0:0 + FSET? ESSENCES,TRIED \?CCL3 + ICALL PERFORM,EXAMINE-COMMAND,POUCH,FALSE-VALUE,PRAXIX + RTRUE +?CCL3: PRINTR "[You must START the game first.]" + + + .FUNCT MOUSE-SAVE:ANY:0:0,GM + SET 'GM,GAME-MODE + ICALL2 V-SAVE,GM + RTRUE + + + .FUNCT MOUSE-RESTORE:ANY:0:0 + CALL2 V-RESTORE,FALSE-VALUE + RSTACK + + + .FUNCT V-SCRIPT:ANY:0:0 + ZERO? SCRIPTING-FLAG /?CCL3 + CALL1 V-SCRIPT-OFF + RSTACK +?CCL3: CALL2 V-GAME,SCRIPT-ON-ROOM + RSTACK + + + .FUNCT V-SAFE-START-OVER:ANY:0:0 + CRLF + PRINTI "[Restart" + PRINT CONFIRM-STR + CRLF + INPUT 1 + EQUAL? STACK,F3 \FALSE + CALL1 V-RESTART + RSTACK + + + .FUNCT V-SAFE-QUIT:ANY:0:0 + CRLF + PRINTI "[Quit" + PRINT CONFIRM-STR + CRLF + INPUT 1 + EQUAL? STACK,F4 \FALSE + CALL1 V-QUIT + RSTACK + + + .FUNCT GETCHR:ANY:0:0,CHR,F,TBL +?FCN: ZERO? NEW-DEFAULT-FLAG /?CCL3 + SET 'NEW-DEFAULT-FLAG,FALSE-VALUE + RETURN DEFAULT-CHR +?CCL3: INPUT 1 >CHR + GRTR? CHR,F-KEY-START \?PRD8 + LESS? CHR,F-KEY-END /?CTR5 +?PRD8: EQUAL? CHR,252 \?CCL6 +?CTR5: ZERO? INHIBIT-MOUSE-COMMANDS /?CND11 + SOUND 1 + JUMP ?FCN +?CND11: EQUAL? CHR,252 \?CND13 + MOUSE-INFO MOUSE-INFO-TBL + GETB MOUSE-INFO-TBL,6 + EQUAL? STACK,3 \?CND13 + GETB MOUSE-INFO-TBL,7 + GET MOUSE-JOURNEY-MENU-TBL,STACK + ICALL STACK + CRLF + JUMP ?FCN +?CND13: EQUAL? CHR,252 \?CCL19 + GETB MOUSE-INFO-TBL,6 >F + EQUAL? F,2 \?CCL22 + GETB MOUSE-INFO-TBL,7 + EQUAL? STACK,1 \?CCL22 + IRESTORE + ZERO? STACK \?FCN + PRINTI "[Undo Failed]" + CRLF + JUMP ?FCN +?CCL22: EQUAL? F,1 \?FCN + ICALL1 GO-TO-GAME-MODE + GETB MOUSE-INFO-TBL,7 + GET MOUSE-MENU-TBL,STACK + ICALL STACK + EQUAL? HERE,GAME-ROOM,CONTROLS-ROOM,END-SESSION-ROOM \?FCN + ICALL1 V-CANCEL + JUMP ?FCN +?CCL19: ICALL1 GO-TO-GAME-MODE + SUB CHR,F-KEY-START + GET F-KEY-TBL,STACK + ICALL STACK + JUMP ?FCN +?CCL6: EQUAL? CHR,18 /?CCL30 + GET 0,8 >F + BTST F,4 \?CND4 +?CCL30: ICALL1 REFRESH-SCREEN + BAND F,-5 + PUT 0,8,STACK + JUMP ?FCN +?CND4: RETURN CHR + + + .FUNCT GO-TO-GAME-MODE:ANY:0:0 + ZERO? GAME-MODE \FALSE + SET 'GAME-MODE,TRUE-VALUE + EQUAL? SAVED-GAME-ROOM,GAME-ROOM,CONTROLS-ROOM,END-SESSION-ROOM /FALSE + ICALL1 SAVE-PARTY-COMMANDS + SET 'SAVED-GAME-ROOM,HERE + SET 'SAVED-GAME-MODE,PARTY-MODE + RETURN SAVED-GAME-MODE + + + .FUNCT SCREEN-NEEDS-INIT:ANY:0:0 + WINGET TEXT-WINDOW,14 + EQUAL? STACK,15 \TRUE + GET 0,19 + EQUAL? STACK,XFWRD \TRUE + GET 0,17 + EQUAL? STACK,XHWRD \TRUE + GET 0,18 + EQUAL? STACK,XVWRD /FALSE + RTRUE + + + .FUNCT REFRESH-CHECK:ANY:0:1,RST,F + CALL1 SCREEN-NEEDS-INIT + ZERO? STACK /?CCL3 + CALL2 REFRESH-SCREEN,TRUE-VALUE + RSTACK +?CCL3: GET 0,8 >F + BTST F,4 \?CCL5 + CALL1 REFRESH-SCREEN + RSTACK +?CCL5: ZERO? RST /FALSE + ICALL1 GRAPHIC + GETP SAVED-GAME-ROOM,P?REFRESH + CALL STACK + RSTACK + + + .FUNCT REFRESH-SCREEN:ANY:0:1,INIT?,F + ASSIGNED? 'INIT? /?CND1 + SET 'INIT?,TRUE-VALUE +?CND1: ZERO? INIT? /?CND3 + ICALL1 INIT-SCREEN + ICALL1 TURN-OFF-CURSOR +?CND3: ICALL2 PRINT-COLUMNS,TRUE-VALUE + ICALL1 PRINT-CHARACTER-COMMANDS + ICALL2 NEXT-DAY,0 + ICALL1 NEW-DEFAULT + ICALL1 GRAPHIC + GETP SAVED-GAME-ROOM,P?REFRESH + ICALL STACK + GET 0,8 >F + BAND F,-5 + PUT 0,8,STACK + RTRUE + + + .FUNCT CHARACTER-INPUT:ANY:2:3,PCM,PCF,CLICK,CHR,MFLG,FLG +?PRG1: ZERO? NO-DEFAULTS \?PRG5 + ICALL BOLD-CURSOR,PCM,PCF +?PRG5: ZERO? CLICK \?CTR8 + CALL1 GETCHR >CHR + EQUAL? CHR,13 \?CCL9 + ZERO? NO-DEFAULTS \?CCL9 +?CTR8: SET 'CLICK,FALSE-VALUE + ICALL BOLD-CURSOR,PCM,PCF + CALL PROCESS-COMMAND,PCM,PCF + ZERO? STACK /?CND14 + ICALL1 PRINT-CHARACTER-COMMANDS + CALL GET-CURSOR,PCM,PCF + EQUAL? STACK,NUL-COMMAND \?CND14 + ICALL C-N-D,PCM,PCF +?CND14: ICALL NORMAL-CURSOR,PCM,PCF + JUMP ?PRG1 +?CCL9: EQUAL? CHR,SINGLE-CLICK,DOUBLE-CLICK,DEFAULT-CHR \?CCL19 + EQUAL? CHR,DEFAULT-CHR \?CCL22 + SET 'MFLG,FALSE-VALUE + JUMP ?CND20 +?CCL22: SET 'MFLG,TRUE-VALUE +?CND20: ZERO? MFLG /?CTR24 + CALL1 LOCATE-MOUSE + ZERO? STACK /?CCL25 +?CTR24: ICALL NORMAL-CURSOR,PCM,PCF + GET MOUSETBL,0 >PCM + GET MOUSETBL,1 >PCF + LESS? PCF,0 \?CCL30 + SET 'SAVED-PCM,PCM + SET 'SAVED-PCF,PCF + SET 'SAVED-CLICK,MFLG + RTRUE +?CCL30: ICALL BOLD-CURSOR,PCM,PCF + SET 'CLICK,MFLG + JUMP ?PRG5 +?CCL25: SOUND 1 + JUMP ?PRG5 +?CCL19: ZERO? NO-DEFAULTS /?CCL32 + SOUND 1 + JUMP ?PRG5 +?CCL32: EQUAL? CHR,SPACE-BAR \?CCL34 + ICALL1 NEW-DEFAULT + JUMP ?PRG5 +?CCL34: EQUAL? CHR,DOWN-ARROW \?CCL36 +?PRG37: EQUAL? PARTY-MODE,OPTION-MODE \?CCL41 + SOUND 1 + JUMP ?PRG5 +?CCL41: ICALL NORMAL-CURSOR,PCM,PCF + EQUAL? PCM,PARTY-MAX \?CCL44 + SET 'PCM,1 + JUMP ?CND42 +?CCL44: INC 'PCM +?CND42: CALL BOLD-CURSOR,PCM,PCF + EQUAL? STACK,NUL-COMMAND /?PRG37 + JUMP ?PRG5 +?CCL36: EQUAL? CHR,UP-ARROW \?CCL48 +?PRG49: EQUAL? PARTY-MODE,OPTION-MODE \?CCL53 + SOUND 1 + JUMP ?PRG5 +?CCL53: ICALL NORMAL-CURSOR,PCM,PCF + EQUAL? PCM,1 \?CCL56 + SET 'PCM,PARTY-MAX + JUMP ?CND54 +?CCL56: DEC 'PCM +?CND54: CALL BOLD-CURSOR,PCM,PCF + EQUAL? STACK,NUL-COMMAND /?PRG49 + JUMP ?PRG5 +?CCL48: EQUAL? CHR,LEFT-ARROW \?CCL60 +?PRG61: EQUAL? PCF,1 \?CCL65 + ICALL NORMAL-CURSOR,PCM,PCF + SET 'SAVED-PCM,PCM + SET 'SAVED-PCF,-1 + SET 'SAVED-CLICK,FALSE-VALUE + RTRUE +?CCL65: ICALL NORMAL-CURSOR,PCM,PCF + DEC 'PCF + CALL BOLD-CURSOR,PCM,PCF + EQUAL? STACK,NUL-COMMAND /?PRG61 + JUMP ?PRG5 +?CCL60: EQUAL? CHR,RIGHT-ARROW \?CCL69 +?PRG70: ICALL NORMAL-CURSOR,PCM,PCF + EQUAL? PCF,3 \?CCL74 + SET 'PCF,1 + JUMP ?CND72 +?CCL74: INC 'PCF +?CND72: CALL BOLD-CURSOR,PCM,PCF + EQUAL? STACK,NUL-COMMAND /?PRG70 + JUMP ?PRG5 +?CCL69: CALL2 CHARACTER-KBD-COMMAND?,CHR >FLG + ZERO? FLG /?CCL78 + ICALL NORMAL-CURSOR,PCM,PCF + GET MOUSETBL,0 >PCM + GET MOUSETBL,1 >PCF + ICALL BOLD-CURSOR,PCM,PCF + EQUAL? FLG,1 \?PRG5 + SET 'CLICK,TRUE-VALUE + JUMP ?PRG5 +?CCL78: SOUND 1 + JUMP ?PRG5 + + + .FUNCT C-N-D:ANY:0:2,PCM,PCF,F + ASSIGNED? 'PCF /?CND1 + SET 'PCF,1 +?CND1: EQUAL? PCF,1 /?CTR4 + SUB PCF,1 + CALL GET-CURSOR,PCM,STACK + EQUAL? STACK,NUL-COMMAND \?CCL5 +?CTR4: ZERO? SUBGROUP-MODE /?CCL10 + CALL1 FIRST-SUBGROUP >F + JUMP ?CND8 +?CCL10: CALL1 FIRST-PARTY >F +?CND8: EQUAL? F,-1 \?CCL13 + CALL NEW-DEFAULT,1,-1 + RSTACK +?CCL13: CALL NEW-DEFAULT,F,1 + RSTACK +?CCL5: SUB PCF,1 + CALL NEW-DEFAULT,PCM,STACK + RSTACK + + + .FUNCT CLEAR-FIELDS:ANY:0:0 + CALL2 PRINT-CHARACTER-COMMANDS,TRUE-VALUE + RSTACK + + + .FUNCT PRINT-CHARACTER-COMMANDS:ANY:0:1,CLEAR,PTBL,CNT,C,BTBL,LN,POS,BCNT,CHR,?TMP1 + SET 'CNT,5 + SET 'LN,COMMAND-START-LINE + ZERO? UPDATE-FLAG /?CND1 + ZERO? CLEAR \?CND1 + ICALL1 FILL-CHARACTER-TBL +?CND1: SET 'PTBL,PARTY + ICALL2 SELECT-SCREEN,COMMAND-WINDOW +?PRG5: DLESS? 'CNT,0 \?CCL9 + ICALL2 SELECT-SCREEN,TEXT-WINDOW + ZERO? SMART-DEFAULT-FLAG /TRUE + SET 'SMART-DEFAULT-FLAG,FALSE-VALUE + ICALL1 SMART-DEFAULT + RTRUE +?CCL9: GET PTBL,1 >CHR + SET 'POS,NAME-COLUMN + ICALL GCURSET,LN,POS + ZERO? CHR /?CTR13 + ZERO? SUBGROUP-MODE /?CCL14 + FSET? CHR,SUBGROUP /?CCL14 +?CTR13: ICALL2 ERASE-COMMAND,NAME-WIDTH-PIX + JUMP ?CND12 +?CCL14: ICALL2 ERASE-COMMAND,NAME-WIDTH-PIX + EQUAL? CHR,TAG \?CCL21 + ZERO? TAG-NAME-LENGTH /?CCL21 + ADD NAME-TBL,2 + PRINTT STACK,TAG-NAME-LENGTH + JUMP ?CND19 +?CCL21: ICALL2 WPRINTD,CHR +?CND19: LESS? SCREEN-WIDTH,8-WIDTH \?CCL26 + CURGET CURGET-TABLE + GET CURGET-TABLE,1 >?TMP1 + SUB NAME-RIGHT,SHORT-ARROW-WIDTH + GRTR? ?TMP1,STACK \?CCL29 + CALL GPOS,LN,CHRV >?TMP1 + SUB NAME-RIGHT,NO-ARROW-WIDTH + CURSET ?TMP1,STACK + PRINTC 62 + JUMP ?CND12 +?CCL29: CALL GPOS,LN,CHRV >?TMP1 + SUB NAME-RIGHT,SHORT-ARROW-WIDTH + CURSET ?TMP1,STACK + PRINTI "->" + JUMP ?CND12 +?CCL26: CALL GPOS,LN,CHRV >?TMP1 + SUB NAME-RIGHT,LONG-ARROW-WIDTH + CURSET ?TMP1,STACK + PRINTI "-->" +?CND12: SUB 5,CNT + GET CHARACTER-INPUT-TBL,STACK >BTBL + SET 'BCNT,0 + SET 'POS,CHR-COMMAND-COLUMN +?PRG30: GRTR? BCNT,2 /?REP31 + ICALL GCURSET,LN,POS + ICALL1 ERASE-COMMAND + ICALL GCURSET,LN,POS + ZERO? CLEAR \?CND32 + ZERO? CHR /?CND32 + ZERO? SUBGROUP-MODE /?CCL37 + FSET? CHR,SUBGROUP /?CCL37 + FSET? CHR,SHADOW \?CND32 +?CCL37: GET BTBL,BCNT + ICALL2 PRINT-COMMAND,STACK +?CND32: ADD POS,COMMAND-WIDTH >POS + INC 'BCNT + JUMP ?PRG30 +?REP31: INC 'LN + ADD PTBL,2 >PTBL + JUMP ?PRG5 + + + .FUNCT SCENE:ANY:1:3,OBJ,M,GFX?,TMP + ASSIGNED? 'GFX? /?CND1 + SET 'GFX?,TRUE-VALUE +?CND1: SET 'UPDATE-FLAG,TRUE-VALUE + ICALL2 SCENE-ACTION,SCENE-END-COMMAND + ZERO? OBJ \?CCL5 + SET 'SCENE-OBJECT,DEFAULT-SCENE + JUMP ?CND3 +?CCL5: SET 'SCENE-OBJECT,OBJ +?CND3: ZERO? GFX? /?CND6 + GETP SCENE-OBJECT,P?GRAPHIC >TMP + ZERO? TMP /?CND6 + ICALL2 GRAPHIC,TMP +?CND6: ZERO? M /?CND10 + ICALL2 MODE,M +?CND10: ICALL2 SCENE-ACTION,SCENE-START-COMMAND + RTRUE + + + .FUNCT PERFORM:ANY:1:4,CMD,OBJO,OBJI,ACT,TMP + ASSIGNED? 'OBJO \?CND1 + SET 'ACTION-OBJECT,OBJO +?CND1: ASSIGNED? 'OBJI \?CND3 + SET 'ACTION-PRSI,OBJI +?CND3: ASSIGNED? 'ACT \?CND5 + SET 'ACTOR,ACT +?CND5: ZERO? SCRIPTING-FLAG /?CND7 + ZERO? DONT-SCRIPT-INPUT \?CND7 + CALL2 FAKE-COMMAND?,CMD + ZERO? STACK \?CND7 + CALL2 GAME-COMMAND?,CMD + ZERO? STACK \?CND7 + DIROUT -1 + CRLF + PRINTI ") " + ZERO? ACTOR /?CND13 + ICALL2 PRINT-DESC,ACTOR + PRINTI ", " +?CND13: GET CMD,COMMAND-STR + PRINT STACK + PRINTC 32 + ZERO? ACTION-OBJECT /?CND15 + ICALL2 PRINT-DESC,ACTION-OBJECT +?CND15: ZERO? ACTION-PRSI /?CND17 + ZERO? PRSI-PREP /?CND17 + PRINTC 32 + PRINT PRSI-PREP +?CND17: ZERO? ACTION-PRSI /?CND21 + PRINTC 32 + ICALL2 PRINT-DESC,ACTION-PRSI +?CND21: CRLF + DIROUT 1 +?CND7: SET 'ACTION,CMD + PUT O-TABLE,0,0 + ZERO? ACTION-OBJECT /?CCL25 + GETP ACTION-OBJECT,P?PRSI >TMP + ZERO? TMP /?CCL25 + CALL TMP + ZERO? STACK /FALSE +?CCL25: ZERO? TMP \?CND23 + SET 'ACTION-PRSI,FALSE-VALUE +?CND23: EQUAL? CMD,CAST-COMMAND \?CND30 + ICALL2 USE-ESSENCES,ACTION-OBJECT +?CND30: CALL2 FAKE-COMMAND?,ACTION + ZERO? STACK \?CND32 + CALL2 GAME-COMMAND?,ACTION + ZERO? STACK \?CND32 + CRLF +?CND32: GETP SCENE-OBJECT,P?ACTION + CALL STACK + ZERO? STACK \?CND36 + GETP HERE,P?ACTION + CALL STACK + ZERO? STACK \?CND36 + EQUAL? PARTY-MODE,FIGHT-MODE \?CCL41 + GETP OPPONENT,P?ACTION + CALL STACK + ZERO? STACK \?CND36 +?CCL41: ZERO? ACTION-OBJECT /?CCL45 + GETP ACTION-OBJECT,P?ACTION + CALL STACK + ZERO? STACK \?CND36 +?CCL45: GET CMD,COMMAND-ACTION + ICALL STACK +?CND36: CALL1 CHECK-USED-UP-ESSENCES + RSTACK + + + .FUNCT FAKE-COMMAND?:ANY:1:1,CMD + EQUAL? CMD,ILL-COMMAND,BUSY-COMMAND,GONE-COMMAND /TRUE + EQUAL? CMD,NUL-COMMAND /TRUE + RFALSE + + + .FUNCT GAME-COMMAND?:ANY:0:1,CMD + ASSIGNED? 'CMD /?CND1 + SET 'CMD,ACTION +?CND1: EQUAL? CMD,GAME-COMMAND,CONTROLS-COMMAND,SCRIPT-ON-COMMAND /TRUE + EQUAL? CMD,SCRIPT-OFF-COMMAND,CHECK-DISK-COMMAND,VERSION-COMMAND /TRUE + EQUAL? CMD,SAVE-COMMAND,RESTORE-COMMAND,END-SESSION-COMMAND /TRUE + EQUAL? CMD,CANCEL-COMMAND,ILL-COMMAND,GONE-COMMAND /TRUE + EQUAL? CMD,BUSY-COMMAND,REFRESH-COMMAND,COMMANDS-COMMAND /TRUE + EQUAL? CMD,NO-COMMANDS-COMMAND /TRUE + RFALSE + + + .FUNCT PROCESS-COMMAND:ANY:2:2,PCM,PCF,CMD,OFCN,RES,?TMP1 + SET 'RES,TRUE-VALUE + ISAVE >CMD + EQUAL? CMD,2 \?CND1 + ICALL2 REFRESH-SCREEN,FALSE-VALUE + CRLF + PRINTI "[Undone.]" + CRLF + RFALSE +?CND1: SET 'ACTION-OBJECT,FALSE-VALUE + LESS? PCF,0 \?CCL5 + SET 'ACTOR,FALSE-VALUE + GET PARTY-COMMANDS,PCM >CMD + JUMP ?CND3 +?CCL5: GET PARTY,PCM >ACTOR + GET CHARACTER-INPUT-TBL,PCM >?TMP1 + SUB PCF,1 + GET ?TMP1,STACK >CMD +?CND3: GET CMD,COMMAND-OBJECT >OFCN + ZERO? OFCN \?CCL8 + CALL2 FAKE-COMMAND?,CMD + ZERO? STACK /?CCL11 + SET 'ACTION,NUL-COMMAND + SET 'RES,FALSE-VALUE + JUMP ?CND6 +?CCL11: CALL2 PERFORM,CMD >RES + JUMP ?CND6 +?CCL8: PUT O-TABLE,0,0 + ICALL OFCN + GET O-TABLE,0 + GRTR? STACK,0 \?CCL14 + ICALL2 FIND-OBJECT,CANCEL-OBJECT + ICALL1 CLEAR-FIELDS + CALL2 GET-COMMAND,CMD + ICALL BOLD-CURSOR,PCM,1,STACK + ICALL PREP-CHECK,CMD,PCM + ICALL1 PRINT-COLUMNS + ICALL1 COMMAND-OBJECT-INPUT + EQUAL? ACTION-OBJECT,CANCEL-OBJECT \?CCL17 + SET 'RES,FALSE-VALUE + SET 'ACTION,NUL-COMMAND + JUMP ?CND6 +?CCL17: CALL2 PERFORM,CMD >RES + JUMP ?CND6 +?CCL14: PRINTI "[Error: No object?]" +?CND6: ZERO? RES /?CCL20 + EQUAL? ACTION,NUL-COMMAND /?CND18 + CALL2 GAME-COMMAND?,ACTION + ZERO? STACK \?CND23 + ICALL1 RUN-CLOCK +?CND23: CRLF + INC 'MOVE-NUMBER + JUMP ?CND18 +?CCL20: EQUAL? ACTION-OBJECT,CANCEL-OBJECT /?CND18 + SET 'SMART-DEFAULT-FLAG,TRUE-VALUE + SOUND 1 +?CND18: ZERO? UPDATE-FLAG /?CND26 + SET 'OFCN,TRUE-VALUE +?CND26: EQUAL? ACTION,MUSINGS-COMMAND /FALSE + ZERO? PUPDATE-FLAG /?CND30 + SET 'PUPDATE-FLAG,FALSE-VALUE + ICALL2 PRINT-COLUMNS,TRUE-VALUE +?CND30: ZERO? SMART-DEFAULT-FLAG \?PRD35 + RETURN OFCN +?PRD35: ZERO? OFCN \?CND32 + SET 'SMART-DEFAULT-FLAG,FALSE-VALUE + ICALL1 SMART-DEFAULT +?CND32: RETURN OFCN + + + .FUNCT PREP-CHECK:ANY:2:2,CMD,PCM,STR + EQUAL? PCM,5 /FALSE + EQUAL? CMD,USE-MIX-COMMAND \?CCL5 + SET 'STR,STR?17 + JUMP ?CND1 +?CCL5: EQUAL? CMD,RIGHT-DIAL-COMMAND,LEFT-DIAL-COMMAND \?CCL7 + CALL1 APPLE2? + ZERO? STACK /?CCL10 + SET 'STR,STR?18 + JUMP ?CND1 +?CCL10: SET 'STR,STR?19 + JUMP ?CND1 +?CCL7: EQUAL? CMD,ASK-UMBER-COMMAND,ASK-TREE-COMMAND,ASK-MINER-COMMAND \?CND1 + SET 'STR,STR?20 +?CND1: ZERO? STR /FALSE + ADD PCM,1 + CALL BOLD-CURSOR,STACK,1,STR + RSTACK + + + .FUNCT FIND-OBJECTS:ANY:1:2,OBJ,BIT,F,CNT + FIRST? OBJ >F /?PRG2 +?PRG2: ZERO? F /TRUE + EQUAL? CNT,9 /TRUE + ZERO? BIT /?CCL9 + FSET? F,BIT /?CND4 +?CCL9: CALL2 FIND-OBJECT,F >CNT +?CND4: NEXT? F >F /?PRG2 + JUMP ?PRG2 + + + .FUNCT FIND-OBJECT:ANY:1:1,F + CALL ADD-TO-LTABLE,O-TABLE,F + RSTACK + + + .FUNCT PRINT-COLUMNS:ANY:0:2,PARTY?,PRSI?,CNT,LN,OBJ,OTBL,ROW,OCNT + SET 'LN,COMMAND-START-LINE + ICALL2 SELECT-SCREEN,COMMAND-WINDOW + ZERO? PARTY? /?CCL3 + SET 'ROW,PARTY-COMMAND-COLUMN + SET 'OTBL,PARTY-COMMANDS + JUMP ?CND1 +?CCL3: ZERO? PRSI? /?CCL5 + ADD COMMAND-OBJECT-COLUMN,COMMAND-WIDTH >ROW + ADD O-TABLE,10 >OTBL + JUMP ?CND1 +?CCL5: SET 'ROW,COMMAND-OBJECT-COLUMN + SET 'OTBL,O-TABLE +?CND1: GET OTBL,0 >CNT +?PRG6: DLESS? 'CNT,0 \?CCL10 + ICALL2 SELECT-SCREEN,TEXT-WINDOW + RTRUE +?CCL10: IGRTR? 'OCNT,5 \?CND11 + SET 'OCNT,0 + ADD ROW,COMMAND-WIDTH >ROW + SET 'LN,COMMAND-START-LINE +?CND11: GET OTBL,1 >OBJ + ICALL GCURSET,LN,ROW + ZERO? PARTY? /?CCL15 + EQUAL? OBJ,TAG-ROUTE-COMMAND \?CCL18 + ZERO? TAG-NAME-LENGTH /?CCL18 + ICALL1 TAG-ROUTE-PRINT + JUMP ?CND13 +?CCL18: ICALL1 ERASE-COMMAND + ICALL GCURSET,LN,ROW + ICALL2 PRINT-COMMAND,OBJ + JUMP ?CND13 +?CCL15: ICALL PRINT-DESC,OBJ,TRUE-VALUE +?CND13: INC 'LN + ADD OTBL,2 >OTBL + JUMP ?PRG6 + + + .FUNCT TAG-ROUTE-PRINT:ANY:0:0,RTL + SET 'RTL,6 + ADD NAME-TBL,2 + PRINTT STACK,TAG-NAME-LENGTH + LESS? SCREEN-WIDTH,12-WIDTH /?CTR2 + GRTR? TAG-NAME-LENGTH,6 \?CCL3 +?CTR2: PRINTI " Rt" + SET 'RTL,3 + JUMP ?CND1 +?CCL3: PRINTI " Route" +?CND1: ADD TAG-NAME-LENGTH,RTL + SUB COMMAND-WIDTH,STACK + SUB STACK,1 + PRINTT WPRINT-EBUF,STACK + RTRUE + + + .FUNCT ILLEGAL-COMMAND-OBJECT?:ANY:2:2,PCM,PCF,?TMP1 + SUB PCF,2 + MUL STACK,5 + ADD PCM,STACK >?TMP1 + GET O-TABLE,0 + GRTR? ?TMP1,STACK /TRUE + RFALSE + + + .FUNCT COMMAND-OBJECT-INPUT:ANY:0:2,PCM,PCF,CHR,NPCM,NPCF,MNPCF,CLICK + ASSIGNED? 'PCM /?CND1 + SET 'PCM,1 +?CND1: ASSIGNED? 'PCF /?CND3 + SET 'PCF,2 +?CND3: SET 'INHIBIT-MOUSE-COMMANDS,TRUE-VALUE + SET 'MNPCF,PCF + ICALL BOLD-OBJECT-CURSOR,PCM,PCF +?PRG5: ZERO? CLICK \?CTR8 + CALL1 GETCHR >CHR + EQUAL? CHR,13 \?CCL9 +?CTR8: ICALL BOLD-OBJECT-CURSOR,PCM,PCF + ICALL PROCESS-COMMAND-OBJECT,PCM,PCF + SET 'INHIBIT-MOUSE-COMMANDS,FALSE-VALUE + RTRUE +?CCL9: EQUAL? CHR,SINGLE-CLICK,DOUBLE-CLICK \?CCL13 + CALL1 LOCATE-MOUSE + ZERO? STACK /?CCL16 + GET MOUSETBL,0 >NPCM + GET MOUSETBL,1 >NPCF + LESS? NPCM,1 /?CTR18 + GRTR? NPCM,5 /?CTR18 + LESS? NPCF,MNPCF /?CTR18 + CALL ILLEGAL-COMMAND-OBJECT?,NPCM,NPCF + ZERO? STACK /?CCL19 +?CTR18: SOUND 1 + JUMP ?PRG5 +?CCL19: ICALL NORMAL-OBJECT-CURSOR,PCM,PCF + SET 'PCM,NPCM + SET 'PCF,NPCF + SET 'CLICK,TRUE-VALUE + JUMP ?PRG5 +?CCL16: SOUND 1 + JUMP ?PRG5 +?CCL13: EQUAL? CHR,DOWN-ARROW \?CCL25 + EQUAL? PCM,5 /?CTR27 + ADD PCM,1 + CALL ILLEGAL-COMMAND-OBJECT?,STACK,PCF + ZERO? STACK /?CCL28 +?CTR27: SOUND 1 + JUMP ?PRG5 +?CCL28: ICALL NORMAL-OBJECT-CURSOR,PCM,PCF + INC 'PCM + ICALL BOLD-OBJECT-CURSOR,PCM,PCF + JUMP ?PRG5 +?CCL25: EQUAL? CHR,UP-ARROW \?CCL32 + EQUAL? PCM,1 \?CCL35 + SOUND 1 + JUMP ?PRG5 +?CCL35: ICALL NORMAL-OBJECT-CURSOR,PCM,PCF + DEC 'PCM + ICALL BOLD-OBJECT-CURSOR,PCM,PCF + JUMP ?PRG5 +?CCL32: EQUAL? CHR,LEFT-ARROW \?CCL37 + EQUAL? PCF,MNPCF \?CCL40 + SOUND 1 + JUMP ?PRG5 +?CCL40: ICALL NORMAL-OBJECT-CURSOR,PCM,PCF + DEC 'PCF + ICALL BOLD-OBJECT-CURSOR,PCM,PCF + JUMP ?PRG5 +?CCL37: EQUAL? CHR,RIGHT-ARROW \?CCL42 + EQUAL? PCF,3 /?CTR44 + ADD PCF,1 + CALL ILLEGAL-COMMAND-OBJECT?,PCM,STACK + ZERO? STACK /?CCL45 +?CTR44: SOUND 1 + JUMP ?PRG5 +?CCL45: ICALL NORMAL-OBJECT-CURSOR,PCM,PCF + INC 'PCF + ICALL BOLD-OBJECT-CURSOR,PCM,PCF + JUMP ?PRG5 +?CCL42: CALL OBJECT-KBD-COMMAND?,CHR,MNPCF + ZERO? STACK /?CCL49 + ICALL NORMAL-OBJECT-CURSOR,PCM,PCF + GET MOUSETBL,0 >PCM + GET MOUSETBL,1 >PCF + ICALL BOLD-OBJECT-CURSOR,PCM,PCF + SET 'CLICK,TRUE-VALUE + JUMP ?PRG5 +?CCL49: SOUND 1 + JUMP ?PRG5 + + + .FUNCT PROCESS-COMMAND-OBJECT:ANY:2:2,PCM,PCF + SUB PCF,2 + MUL STACK,5 + ADD PCM,STACK + GET O-TABLE,STACK >ACTION-OBJECT + RETURN ACTION-OBJECT + + + .FUNCT BOLD-OBJECT-CURSOR:ANY:2:2,PCM,PCF,X,Y + ICALL2 SELECT-SCREEN,COMMAND-WINDOW + SUB COMMAND-START-LINE,1 + ADD STACK,PCM >Y + SUB PCF,1 + MUL COMMAND-WIDTH,STACK + ADD CHR-COMMAND-COLUMN,STACK >X + ICALL GCURSET,Y,X + HLIGHT H-BOLD + SUB PCF,2 + MUL STACK,5 + ADD PCM,STACK + GET O-TABLE,STACK + ICALL PRINT-DESC,STACK,TRUE-VALUE + HLIGHT H-NORMAL + ICALL GCURSET,Y,X + CALL2 SELECT-SCREEN,TEXT-WINDOW + RSTACK + + + .FUNCT NORMAL-OBJECT-CURSOR:ANY:2:2,PCM,PCF,X,Y + ICALL2 SELECT-SCREEN,COMMAND-WINDOW + SUB COMMAND-START-LINE,1 + ADD STACK,PCM >Y + SUB PCF,1 + MUL COMMAND-WIDTH,STACK + ADD CHR-COMMAND-COLUMN,STACK >X + ICALL GCURSET,Y,X + SUB PCF,2 + MUL STACK,5 + ADD PCM,STACK + GET O-TABLE,STACK + ICALL PRINT-DESC,STACK,TRUE-VALUE + CALL2 SELECT-SCREEN,TEXT-WINDOW + RSTACK + + + .FUNCT BOLD-PARTY-CURSOR:ANY:2:2,PCM,PCF,X,Y,CMD + ICALL2 SELECT-SCREEN,COMMAND-WINDOW + SET 'X,PARTY-COMMAND-COLUMN + SUB COMMAND-START-LINE,1 + ADD STACK,PCM >Y + ICALL GCURSET,Y,X + ICALL1 ERASE-COMMAND + ICALL GCURSET,Y,X + GET PARTY-COMMANDS,PCM >CMD + EQUAL? CMD,NUL-COMMAND /?CND1 + HLIGHT H-BOLD + EQUAL? CMD,TAG-ROUTE-COMMAND \?CCL5 + GRTR? TAG-NAME-LENGTH,0 \?CCL5 + ICALL1 TAG-ROUTE-PRINT + JUMP ?CND3 +?CCL5: ICALL2 PRINT-COMMAND,CMD +?CND3: HLIGHT H-NORMAL +?CND1: ICALL GCURSET,Y,X + ICALL2 SELECT-SCREEN,TEXT-WINDOW + RETURN CMD + + + .FUNCT NORMAL-PARTY-CURSOR:ANY:2:2,PCM,PCF,CMD,Y,X + ICALL2 SELECT-SCREEN,COMMAND-WINDOW + SET 'X,PARTY-COMMAND-COLUMN + SUB COMMAND-START-LINE,1 + ADD STACK,PCM >Y + ICALL GCURSET,Y,X + ICALL1 ERASE-COMMAND + ICALL GCURSET,Y,X + GET PARTY-COMMANDS,PCM >CMD + EQUAL? CMD,TAG-ROUTE-COMMAND \?CCL3 + GRTR? TAG-NAME-LENGTH,0 \?CCL3 + ICALL1 TAG-ROUTE-PRINT + JUMP ?CND1 +?CCL3: ICALL2 PRINT-COMMAND,CMD +?CND1: CALL2 SELECT-SCREEN,TEXT-WINDOW + RSTACK + + + .FUNCT CIT:ANY:1:4,CHR,CMD1,CMD2,CMD3 + ASSIGNED? 'CMD1 /?CND1 + SET 'CMD1,NUL-COMMAND +?CND1: ASSIGNED? 'CMD2 /?CND3 + SET 'CMD2,NUL-COMMAND +?CND3: ASSIGNED? 'CMD3 /?CND5 + SET 'CMD3,NUL-COMMAND +?CND5: ICALL CHANGE-CIT,CHR,1,CMD1,FALSE-VALUE + ICALL CHANGE-CIT,CHR,2,CMD2,FALSE-VALUE + ICALL CHANGE-CIT,CHR,3,CMD3 + RTRUE + + + .FUNCT CHANGE-CIT:ANY:3:4,CHR,POS,CMD,PRT,?TMP1 + ASSIGNED? 'PRT /?CND1 + SET 'PRT,TRUE-VALUE +?CND1: FSET? CHR,IN-PARTY \FALSE + CALL2 PARTY-PCM,CHR + GET CHARACTER-INPUT-TBL,STACK >?TMP1 + SUB POS,1 + PUT ?TMP1,STACK,CMD + ZERO? PRT /TRUE + ICALL1 PRINT-CHARACTER-COMMANDS + RTRUE + + + .FUNCT PARTY-PCM:ANY:1:1,CHR,CNT,MAX + SET 'CNT,1 + GET PARTY,0 >MAX +?PRG1: GET PARTY,CNT + EQUAL? STACK,CHR \?CCL5 + RETURN CNT +?CCL5: IGRTR? 'CNT,MAX \?PRG1 + RFALSE + + + .FUNCT OPTION:ANY:1:4,CHR,CMD1,CMD2,CMD3,SC + ASSIGNED? 'CMD1 /?CND1 + SET 'CMD1,NUL-COMMAND +?CND1: ASSIGNED? 'CMD2 /?CND3 + SET 'CMD2,NUL-COMMAND +?CND3: ASSIGNED? 'CMD3 /?CND5 + SET 'CMD3,NUL-COMMAND +?CND5: SET 'OPTION-ACTOR,CHR + EQUAL? PARTY-MODE,OPTION-MODE /?CND7 + SET 'OPTION-OLD-MODE,PARTY-MODE +?CND7: GETPT CHR,P?OPTION-COMMANDS >SC + PUT SC,0,CMD1 + PUT SC,1,CMD2 + PUT SC,2,CMD3 + ICALL2 MODE,OPTION-MODE + CALL2 PARTY-PCM,CHR + CALL NEW-DEFAULT,STACK,1 + RSTACK + + + .FUNCT END-OPTION:ANY:0:1,M,SC + ASSIGNED? 'M /?CND1 + SET 'M,TRUE-VALUE +?CND1: ZERO? OPTION-ACTOR /FALSE + GETPT OPTION-ACTOR,P?OPTION-COMMANDS >SC + PUT SC,0,NUL-COMMAND + PUT SC,1,NUL-COMMAND + PUT SC,2,NUL-COMMAND + SET 'OPTION-ACTOR,FALSE-VALUE + ZERO? M /?CND5 + ICALL2 MODE,OPTION-OLD-MODE +?CND5: SET 'SMART-DEFAULT-FLAG,TRUE-VALUE + RETURN SMART-DEFAULT-FLAG + + + .FUNCT CHARACTER-HERE?:ANY:1:1,CHR + FSET? CHR,IN-PARTY \FALSE + ZERO? SUBGROUP-MODE /TRUE + FSET? CHR,SUBGROUP /TRUE + RFALSE + + + .FUNCT MAKE-SUBGROUP:ANY:1:3,CHR,CHR2,CHR3 + ICALL1 CLEAR-SUBGROUP + SET 'SUBGROUP-MODE,TRUE-VALUE + FSET CHR,SUBGROUP + ZERO? CHR2 /?CND1 + FSET CHR2,SUBGROUP +?CND1: ZERO? CHR3 /?CND3 + FSET CHR3,SUBGROUP +?CND3: EQUAL? TAG,CHR,CHR2,CHR3 /TRUE + ICALL1 SAVE-TAG-OBJECTS + RTRUE + + + .FUNCT CLEAR-SUBGROUP:ANY:0:0,CNT + ZERO? SUBGROUP-MODE /?CND1 + FSET? TAG,SUBGROUP /?CND1 + ICALL1 RESTORE-TAG-OBJECTS +?CND1: SET 'SUBGROUP-MODE,FALSE-VALUE + SET 'UPDATE-FLAG,TRUE-VALUE +?PRG5: IGRTR? 'CNT,PARTY-MAX /TRUE + GET PARTY,CNT + FCLEAR STACK,SUBGROUP + JUMP ?PRG5 + + + .FUNCT MOVE-TO:ANY:1:5,RM,STR,GC,EF?,GFX?,MD,TMP + ASSIGNED? 'EF? /?CND1 + SET 'EF?,TRUE-VALUE +?CND1: ASSIGNED? 'GFX? /?CND3 + SET 'GFX?,TRUE-VALUE +?CND3: ZERO? EF? /?CND5 + ICALL1 CLEAR-BUSY +?CND5: ZERO? GC \?CND7 + SET 'UPDATE-FLAG,TRUE-VALUE +?CND7: ZERO? DONT-CAST-FLAG /?CND9 + SET 'DONT-CAST-FLAG,FALSE-VALUE + FCLEAR HERE,DONT-CAST +?CND9: ZERO? EF? /?CND11 + GETP HERE,P?EXIT + CALL STACK >TMP +?CND11: FSET? RM,PROVISIONER \?CCL15 + SET 'MD,PROVISION-MODE + JUMP ?CND13 +?CCL15: FSET? HERE,PROVISIONER \?CCL17 + SET 'MD,TRAVEL-MODE + JUMP ?CND13 +?CCL17: EQUAL? PARTY-MODE,TRAVEL-MODE /?CND13 + SET 'MD,TRAVEL-MODE +?CND13: SET 'HERE,RM + ZERO? MD /?CND19 + ZERO? EF? /?PRT21 + PUSH 0 + JUMP ?PRE23 +?PRT21: PUSH 1 +?PRE23: ICALL MODE,MD,FALSE-VALUE,STACK +?CND19: ZERO? STR /?CND24 + PRINT STR +?CND24: ZERO? GC /?CCL28 + PUSH CANCEL-COMMAND + JUMP ?CND26 +?CCL28: PUSH GAME-COMMAND +?CND26: ICALL FILL-PARTY-COMMANDS,RM,STACK + ZERO? EF? /?CND29 + GETP RM,P?ENTER + CALL STACK >TMP + ICALL1 RESTORE-SPELLS +?CND29: ZERO? GC /?CCL33 + ICALL2 PRINT-COLUMNS,TRUE-VALUE + JUMP ?CND31 +?CCL33: SET 'PUPDATE-FLAG,TRUE-VALUE +?CND31: SET 'SMART-DEFAULT-FLAG,TRUE-VALUE + ZERO? EF? \?PRD37 + RETURN RM +?PRD37: ZERO? GFX? \?PRD38 + RETURN RM +?PRD38: GETP HERE,P?GRAPHIC >TMP + ZERO? TMP /?CND34 + GETP SCENE-OBJECT,P?GRAPHIC + ZERO? STACK \?CND34 + ICALL2 GRAPHIC,TMP +?CND34: RETURN RM + + + .FUNCT SMART-DEFAULT:ANY:0:0 + EQUAL? PARTY-MODE,OPTION-MODE \?CCL3 + CALL2 PARTY-PCM,OPTION-ACTOR + CALL NEW-DEFAULT,STACK,1 + RSTACK +?CCL3: GET PARTY-COMMANDS,1 + EQUAL? STACK,NUL-COMMAND \?CCL5 + ZERO? SUBGROUP-MODE /?CCL8 + CALL1 FIRST-SUBGROUP + CALL NEW-DEFAULT,STACK,1 + RSTACK +?CCL8: CALL1 FIRST-PARTY + CALL NEW-DEFAULT,STACK,1 + RSTACK +?CCL5: CALL1 NEW-DEFAULT + RSTACK + + + .FUNCT FILL-PARTY-COMMANDS:ANY:1:2,RM,GC,T,O + ASSIGNED? 'GC /?CND1 + SET 'GC,GAME-COMMAND +?CND1: GETPT RM,P?TRAVEL-COMMANDS >T + ADD PARTY-COMMANDS,2 + PTSIZE T >O + COPYT T,STACK,O + LESS? O,8 \?CND3 + PUT PARTY-COMMANDS,4,NUL-COMMAND +?CND3: PUT PARTY-COMMANDS,5,GC + RTRUE + + + .FUNCT ADD-PARTY-COMMAND:ANY:1:2,CMD,DEF?,CNT + ASSIGNED? 'DEF? /?CND1 + SET 'DEF?,TRUE-VALUE +?CND1: CALL CHANGE-PARTY-COMMAND,NUL-COMMAND,CMD,DEF? + RSTACK + + + .FUNCT NUL-PARTY-COMMAND:ANY:1:1,CMD + CALL CHANGE-PARTY-COMMAND,CMD,NUL-COMMAND,FALSE-VALUE + RSTACK + + + .FUNCT CHANGE-PARTY-COMMAND:ANY:2:3,OCMD,NCMD,DEF?,CNT + ASSIGNED? 'DEF? /?PRG3 + SET 'DEF?,TRUE-VALUE +?PRG3: IGRTR? 'CNT,5 /TRUE + GET PARTY-COMMANDS,CNT + EQUAL? STACK,OCMD \?PRG3 + PUT PARTY-COMMANDS,CNT,NCMD + SET 'PUPDATE-FLAG,TRUE-VALUE + RTRUE + + + .FUNCT REMOVE-PARTY-COMMAND:ANY:1:1,CMD,CNT,?TMP1,?TMP2 +?PRG1: IGRTR? 'CNT,4 /FALSE + GET PARTY-COMMANDS,CNT + EQUAL? STACK,CMD \?PRG1 + ADD CNT,1 + MUL STACK,2 + ADD PARTY-COMMANDS,STACK >?TMP2 + MUL CNT,2 + ADD PARTY-COMMANDS,STACK >?TMP1 + SUB 4,CNT + MUL STACK,2 + COPYT ?TMP2,?TMP1,STACK + PUT PARTY-COMMANDS,4,NUL-COMMAND + SET 'PUPDATE-FLAG,TRUE-VALUE + SET 'SMART-DEFAULT-FLAG,TRUE-VALUE + RTRUE + + + .FUNCT NEW-DEFAULT:ANY:0:2,PCM,PCF + ASSIGNED? 'PCM /?CND1 + SET 'PCM,1 +?CND1: ASSIGNED? 'PCF /?CND3 + SET 'PCF,-1 +?CND3: SET 'NEW-DEFAULT-FLAG,TRUE-VALUE + PUT MOUSETBL,0,PCM + PUT MOUSETBL,1,PCF + RTRUE + + + .FUNCT TRAVEL-COMMANDS:ANY:1:5,OBJ,CMD1,CMD2,CMD3,CMD4,TBL + ASSIGNED? 'CMD1 /?CND1 + SET 'CMD1,NUL-COMMAND +?CND1: ASSIGNED? 'CMD2 /?CND3 + SET 'CMD2,NUL-COMMAND +?CND3: ASSIGNED? 'CMD3 /?CND5 + SET 'CMD3,NUL-COMMAND +?CND5: ASSIGNED? 'CMD4 /?CND7 + SET 'CMD4,NUL-COMMAND +?CND7: GETPT OBJ,P?TRAVEL-COMMANDS >TBL + PUT TBL,0,CMD1 + PUT TBL,1,CMD2 + PUT TBL,2,CMD3 + PTSIZE TBL + GRTR? STACK,6 \?CND9 + PUT TBL,3,CMD4 +?CND9: ICALL UPDATE-CHECK,OBJ,TBL + RTRUE + + + .FUNCT PROVISION-COMMANDS:ANY:1:4,OBJ,CMD1,CMD2,CMD3,TBL + ASSIGNED? 'CMD1 /?CND1 + SET 'CMD1,NUL-COMMAND +?CND1: ASSIGNED? 'CMD2 /?CND3 + SET 'CMD2,NUL-COMMAND +?CND3: ASSIGNED? 'CMD3 /?CND5 + SET 'CMD3,NUL-COMMAND +?CND5: GETPT OBJ,P?PROVISION-COMMANDS >TBL + PUT TBL,0,CMD1 + PUT TBL,1,CMD2 + PUT TBL,2,CMD3 + ICALL UPDATE-CHECK,OBJ,TBL + RTRUE + + + .FUNCT UPDATE-CHECK:ANY:2:2,OBJ,TBL,?TMP1 + EQUAL? OBJ,HERE,SCENE-OBJECT \?CCL3 + ADD PARTY-COMMANDS,2 >?TMP1 + PTSIZE TBL + COPYT TBL,?TMP1,STACK + SET 'PUPDATE-FLAG,TRUE-VALUE + RETURN PUPDATE-FLAG +?CCL3: FSET? OBJ,IN-PARTY \FALSE + SET 'UPDATE-FLAG,TRUE-VALUE + RETURN UPDATE-FLAG + + + .FUNCT SAVE-PROVISION-COMMANDS:ANY:1:1,CHR + CALL SAVE-TRAVEL-COMMANDS,CHR,P?PROVISION-COMMANDS + RSTACK + + + .FUNCT SAVE-TRAVEL-COMMANDS:ANY:1:2,CHR,PRP,?TMP1 + ASSIGNED? 'PRP /?CND1 + SET 'PRP,P?TRAVEL-COMMANDS +?CND1: GETPT CHR,PRP >?TMP1 + GETPT CHR,P?SAVED-COMMANDS + COPYT ?TMP1,STACK,6 + RTRUE + + + .FUNCT RESTORE-PROVISION-COMMANDS:ANY:1:1,CHR + CALL RESTORE-TRAVEL-COMMANDS,CHR,P?PROVISION-COMMANDS + RSTACK + + + .FUNCT RESTORE-TRAVEL-COMMANDS:ANY:1:2,CHR,PRP,?TMP1 + ASSIGNED? 'PRP /?CND1 + SET 'PRP,P?TRAVEL-COMMANDS +?CND1: GETPT CHR,P?SAVED-COMMANDS >?TMP1 + GETPT CHR,PRP + COPYT ?TMP1,STACK,6 + SET 'UPDATE-FLAG,TRUE-VALUE + RETURN UPDATE-FLAG + + + .FUNCT CHANGE-TRAVEL-COMMAND:ANY:3:5,CHR,OCMD,NCMD,NUP,PRP,TBL,CNT,CMD + ASSIGNED? 'PRP /?CND1 + SET 'PRP,P?TRAVEL-COMMANDS +?CND1: SET 'CNT,-1 + GETPT CHR,PRP >TBL +?PRG3: IGRTR? 'CNT,3 /FALSE + GET TBL,CNT >CMD + EQUAL? CMD,OCMD \?CCL9 + PUT TBL,CNT,NCMD + EQUAL? CHR,HERE \?CCL12 + ZERO? NUP \?CCL12 + ICALL2 FILL-PARTY-COMMANDS,CHR + SET 'PUPDATE-FLAG,TRUE-VALUE + RTRUE +?CCL12: SET 'UPDATE-FLAG,TRUE-VALUE + RTRUE +?CCL9: EQUAL? CMD,NCMD \?PRG3 + RFALSE + + + .FUNCT CHANGE-PROVISION-COMMAND:ANY:3:3,CHR,OCMD,NCMD + CALL CHANGE-TRAVEL-COMMAND,CHR,OCMD,NCMD,FALSE-VALUE,P?PROVISION-COMMANDS + RSTACK + + + .FUNCT ADD-PROVISION-COMMAND:ANY:2:2,CHR,CMD + CALL CHANGE-TRAVEL-COMMAND,CHR,NUL-COMMAND,CMD,FALSE-VALUE,P?PROVISION-COMMANDS + RSTACK + + + .FUNCT ADD-TRAVEL-COMMAND:ANY:2:2,CHR,CMD + CALL CHANGE-TRAVEL-COMMAND,CHR,NUL-COMMAND,CMD + RSTACK + + + .FUNCT FORCE-TRAVEL-COMMAND:ANY:2:2,CHR,CMD + CALL TRAVEL-COMMAND?,CHR,CMD + ZERO? STACK \FALSE + CALL ADD-TRAVEL-COMMAND,CHR,CMD + RSTACK + + + .FUNCT TRAVEL-COMMAND?:ANY:2:3,CHR,CMD,PRP,TBL,CNT,SIZ + ASSIGNED? 'PRP /?CND1 + SET 'PRP,P?TRAVEL-COMMANDS +?CND1: SET 'CNT,-1 + GETPT CHR,PRP >TBL + PTSIZE TBL + DIV STACK,2 + SUB STACK,1 >SIZ +?PRG3: IGRTR? 'CNT,SIZ /FALSE + GET TBL,CNT + EQUAL? STACK,CMD \?PRG3 + RTRUE + + + .FUNCT REMOVE-PROVISION-COMMAND:ANY:2:2,CHR,CMD + CALL REMOVE-TRAVEL-COMMAND,CHR,CMD,P?PROVISION-COMMANDS + RSTACK + + + .FUNCT REMOVE-TRAVEL-COMMAND:ANY:0:3,CHR,CMD,PRP,TBL,CNT,SIZ,?TMP1,?TMP2 + SET 'CNT,-1 + ASSIGNED? 'CHR /?CND1 + SET 'CHR,HERE +?CND1: ASSIGNED? 'CMD /?CND3 + SET 'CMD,ACTION +?CND3: ASSIGNED? 'PRP /?CND5 + SET 'PRP,P?TRAVEL-COMMANDS +?CND5: GETPT CHR,PRP >TBL + PTSIZE TBL + DIV STACK,2 + SUB STACK,1 >SIZ +?PRG7: IGRTR? 'CNT,SIZ /FALSE + GET TBL,CNT + EQUAL? STACK,CMD \?PRG7 + EQUAL? SIZ,CNT /?CND13 + ADD CNT,1 + MUL STACK,2 + ADD TBL,STACK >?TMP2 + MUL CNT,2 + ADD TBL,STACK >?TMP1 + SUB SIZ,CNT + MUL STACK,2 + COPYT ?TMP2,?TMP1,STACK +?CND13: PUT TBL,SIZ,NUL-COMMAND + ICALL UPDATE-CHECK,CHR,TBL + EQUAL? CHR,HERE,SCENE-OBJECT \TRUE + EQUAL? ACTION,CMD \TRUE + SET 'SMART-DEFAULT-FLAG,TRUE-VALUE + RTRUE + + + .FUNCT PRSI-INPUT:ANY:1:2,STR,COL3,TMP,OBJ,?TMP1 + SET 'PRSI-PREP,STR + SET 'OBJ,ACTION-OBJECT + ZERO? COL3 /?CCL3 + GET O-TABLE,5 >TMP + JUMP ?CND1 +?CCL3: GET O-TABLE,0 >TMP +?CND1: GRTR? TMP,0 \FALSE + INC 'TMP + ZERO? COL3 /?CCL9 + PUT O-TABLE,5,TMP + ADD TMP,5 + PUT O-TABLE,STACK,CANCEL-OBJECT + JUMP ?CND7 +?CCL9: PUT O-TABLE,0,TMP + PUT O-TABLE,TMP,CANCEL-OBJECT +?CND7: ICALL1 CLEAR-FIELDS + CALL2 PARTY-PCM,ACTOR >TMP + ZERO? COL3 /?CCL12 + CALL2 GET-COMMAND,ACTION + ICALL BOLD-CURSOR,TMP,1,STACK + EQUAL? TMP,5 \?CND13 + SET 'TMP,4 +?CND13: CALL2 GET-DESC,ACTION-OBJECT + ICALL BOLD-CURSOR,TMP,2,STACK + ADD TMP,1 + ICALL BOLD-CURSOR,STACK,2,STR + ICALL PRINT-COLUMNS,FALSE-VALUE,TRUE-VALUE + ICALL COMMAND-OBJECT-INPUT,1,3 + JUMP ?CND10 +?CCL12: GRTR? TMP,3 \?CND15 + SET 'TMP,3 +?CND15: CALL2 GET-COMMAND,ACTION + ICALL BOLD-CURSOR,TMP,1,STACK + ADD TMP,1 >?TMP1 + CALL2 GET-DESC,ACTION-OBJECT + ICALL BOLD-CURSOR,?TMP1,1,STACK + ADD TMP,2 + ICALL BOLD-CURSOR,STACK,1,STR + ICALL2 PRINT-COLUMNS,FALSE-VALUE + ICALL1 COMMAND-OBJECT-INPUT +?CND10: EQUAL? ACTION-OBJECT,CANCEL-OBJECT \?CCL19 + SET 'ACTION,NUL-COMMAND + RFALSE +?CCL19: SET 'ACTION-PRSI,ACTION-OBJECT + SET 'ACTION-OBJECT,OBJ + RTRUE + + + .FUNCT RUN-CLOCK:ANY:0:0,OBJ,NXT,CNT + GETP HERE,P?CLOCK + ICALL STACK + GETP SCENE-OBJECT,P?CLOCK + ICALL STACK + FIRST? CLOCK-QUEUE >OBJ /?PRG2 +?PRG2: ZERO? OBJ /TRUE + NEXT? OBJ >NXT /?BOGUS7 +?BOGUS7: GETP OBJ,P?TIME + SUB STACK,1 >CNT + LESS? CNT,1 \?CCL10 + GETP OBJ,P?ACTION + ICALL STACK + ZERO? CNT \?CND8 + REMOVE OBJ + JUMP ?CND8 +?CCL10: PUTP OBJ,P?TIME,CNT +?CND8: SET 'OBJ,NXT + JUMP ?PRG2 + + + .FUNCT QUEUE:ANY:2:2,OBJ,TIM + MOVE OBJ,CLOCK-QUEUE + ADD TIM,1 + PUTP OBJ,P?TIME,STACK + RTRUE + + + .FUNCT ADD-TO-LTABLE:ANY:2:2,TBL,OBJ,TMP + GET TBL,0 + ADD STACK,1 >TMP + PUT TBL,TMP,OBJ + PUT TBL,0,TMP + RETURN TMP + + + .FUNCT TURN-ON-CURSOR:ANY:0:0 + CURSET -2 + RTRUE + + + .FUNCT TURN-OFF-CURSOR:ANY:0:0 + CURSET -1 + RTRUE + + .ENDSEG + + .ENDI diff --git a/input.zil b/input.zil new file mode 100644 index 0000000..7f73805 --- /dev/null +++ b/input.zil @@ -0,0 +1,1980 @@ +"INPUT for + JOURNEY + (c) Copyright 1988, 1989 Infocom, Inc. All Rights Reserved." + + + +;"Constants" + + + + + + + + + + + + + + + + + + + + + + + + + +;"Width of '-->', '->', and '>' in pixels." + + + + + !\ >> + !\ >> + +) (CLEN )) + + > + )> + >> + + ;"else, ZIL gets confused between verb-word GO and routine GO" + + + + + + ; + )> + + > + > + + + + ) + ( + ) + ( + ) + (T + )> + + + > + + + + + + + + + + + + + +> + + +
+
+
+
>> + +> + +> + +> + + > + ;"Don't update this inside of a fight..." + )> + > + > 5> + ) + (> + > T) + ( + > + >>> + + 6>) + (T + + + > + > + > 2> + ) + (T + + .CHR>> + + >> + > + )>)>> + > 2> + ) + (T + )>>)>>> + + + > + > + >> + ,NUL-COMMAND) + ( + >> + ,NUL-COMMAND) + ( + > + ,NUL-COMMAND) + ( + >> + + >> + .CMD) + ( + > + ,NUL-COMMAND) + (T + .CMD)>) + ( + > + ,NUL-COMMAND) + ( + > + > + ,NUL-COMMAND) + ( + > + ,NUL-COMMAND) + ( + + > + > + > + >> + ,NUL-COMMAND) + (>> + .CMD) + (T + + + + > ,NUL-COMMAND) + (T + .CMD)>)>> + +) (DUF? <>) "AUX" TBL (OFF 0)) + + + > + ) + (T >)> + > + + >) + (T + > + + >> + + )>)> + ) + (T )>> + + + > + > + > + >) + ( + > + + + ) + ( + + + + ) + ( + > + > + > + )> + >)> + > + > + )> + ,CHRH>> + ,CHRV>> + + + >) + (T + + >)> + > + >> + )> + > + > + > + + > + > + + + )> + + > + + + )> + ) + (T + + + > + + )> + 4>> + + >)> + + + )>)> + + > + ) + (T + + > + > + + >) + (T + + + )>) + (T + > + + + > + + + + >) + (T + + + >)> + + + > + + + + + >)> + )>)> + >)>> + ) + (T + )>) + (T + + + ;)> + ;> + ; + 2>>> + ; 2>>> + ; >)> + ; .F> + ; + )> + ; + ; + )> + + > + ) + (T + + + ;)>)> + + )> + > + + 2>>> + .F> + + > + + <+ + + > + .WIDTH> 2>>> + + )> + + )> + > + + + + + >> + +> + > + > + + + +; + >)> +; )> + ;"Make fixed-width for now..." +; +; )> +; + >)> + > + +> + + + > ,SCREEN-WIDTH> + > + ) + (<==? .F 1> + ) + (<==? .F ,SCREEN-WIDTH> + + ) + (T + )>>> + +> + +> + <+ ,COMMAND-START-LINE 4>> + + ) + (T + )> + ">>> + ">>> + ">>>)> + ) + (T + + + + > + + + + ,RIGHT-COLUMN-LEFT-EDGE>> + + >) + (T + + + ,RIGHT-COLUMN-LEFT-EDGE>> + )>)> + ) + (T + > + >> + > + > + + + >)> + + <+ ,COMMAND-WIDTH + ,NAME-WIDTH 1>> + >> + ) + (T + )> + + > + >) + ( + ,BORDER-FLAG> + > + + + + + >)> + >)>) + (> + >> + > + + + >)> + + + >)>)> + + + >) + (T + + >>)> + )> + > + + + >)> + >) + (T + + + + >)> + + >) + (T + >)>)>>)>>> + +) "AUX" F) + + >)> + )> + ;"Make fixed-width for now..." + + )> + + >)> + > + + +
+
>> + +> +> + + <- .PCF 1>>> + + + ; + > + "Added 5/24 to fix fencepost error on Apple II + Still doesn't work, however, so removed 5/25...." + 5> ,CHRH>>) + (T + )> + > + + + .PCM>> + >>>> + + + ) + (T + <- .PCF 1>>> + > + ;"The preceding NOT was added 5/22 for PC bug..." + + + )>)> + + + .CMD> + + + + > + + + .PCM>> + >>>> + + + > + ) + (> + + > + + <- .PCF 1>>>)> + > + +> + + ) + (T + <+ 1> ,CHRH> 1>)>> + + ) + (T + <+ 1> ,CHRV> 1>)>> + +) (MY )) + > + >> + >> + + >> + + ) + (> + > + + 1> + ,COMMAND-WIDTH>>>> + + ,COMMAND-WIDTH> 1>> + + ) + (T )>)>> + +) MFLG) + + )> + > 13> + >> + > + + + )> + + ) + ( + + 0> + )> + >) + (T + )> + > + 0>> + + )> + + > + > + + + + ) + (T + >)> + ) + (T + )> + ) + (T + )>) + (,NO-DEFAULTS ) + ( + > + ) + ( + + + ) + (T + >)> + + ,NUL-COMMAND> + )>>) + ( + + + ) + (T + >)> + + ,NUL-COMMAND> + )>>) + ( + ) + ( + ) + (T + + + + ,NUL-COMMAND>> + + > + + ) + (T + )>) + (T + >)> + )>) + ( + + > + > + + ) + (T )>>>> + + ,NUL-COMMAND>> + ) + ( + + ) + (T + >)>>> + +> ,PARTY-MAX> + ) + ( 0> + ,NUL-COMMAND>> + )>>> + +> ,PARTY-MAX> + + ) + ( ,SUBGROUP> + 0> + ,NUL-COMMAND>>> + )>> + .CNT> + +> + >> + >)> + ) + (> + ,NUL-COMMAND>) + (> + > + > + + )> + >>> + +) + "AUX" (PCM 1) (CNT 0) OFF TBL CMD) + > + >> + >)> + + > + ) + ( + + ) + (T + + + )>) + (T + > + + ) + (> + ,NUL-COMMAND>) + (> + >)> + + > + + >)> + )>) + (.F + )> + >>)> + >>> + +) CMD) + > + >> + >)> + + )> + ) + ( ,P?KBD> + ,P?KBD2>> + > + 1>> + 2>> + )> + >>> + + + + + + +> + +; + +> + +> + +> + +> + + + + + + )>> + +> + + + + )>> + + + ,PRAXIX> + ) + (T + )>> + + + > + +>> + +) + (T + )>> + + + + + + + + + + + + + + + ,F3> + )>> + + + ,F4> + )>> + +> + +> + ,DEFAULT-CHR) + (T + > + > + > + + )> + + + 3> + >> + + )>)> + + > + + 1>> + > + )>) + ( + + >> + + )>)> + ) + (T + + >> + )>) + ( + > 4>> + + > + )> + .CHR)>> + + + ;"NOT added 2/15/89" + + > + + + )>)>> + + 15> + ,XFWRD> + ,XHWRD> + ,XVWRD>> + ) + (T + )>> + +) "AUX" F) + + ) + (> 4> + ) + (.RST + + >)>> + + + )> + + + + + + > + > + >> + +) "AUX" CHR MFLG FLG) + + )> + > 13> + >> + > + + + + + ,NUL-COMMAND> + )>)> + + ) + ( + + >) + (T + )> + > + + > + > + + + + + ) + (T + + )>) + (T + )>) + (,NO-DEFAULTS ) + ( + ) + ( + + ) + (T + + + ) + (T + >)> + + ,NUL-COMMAND> + )>)>>) + ( + + ) + (T + + + ) + (T + >)> + + ,NUL-COMMAND> + )>)>>) + ( + + + + + > + ) + (T + + > + + ,NUL-COMMAND> + )>)>>) + ( + + + ) + (T + >)> + + ,NUL-COMMAND> + )>>) + (> + + > + > + + )>) + (T )>>>> + + + > ,NUL-COMMAND>> + >) + (T + >)> + + ) + (T + )>) + (T + >)>> + +> + +) + "AUX" PTBL (CNT 5) C BTBL (LN ,COMMAND-START-LINE) + POS BCNT CHR) + > )> + + + > 0> + + > + )> + ) + (T + > + + + + >>> + ) + (T + + + >> + + ,TAG-NAME-LENGTH>) + (T + )> + + + + <- ,NAME-RIGHT ,SHORT-ARROW-WIDTH>> + + <- ,NAME-RIGHT ,NO-ARROW-WIDTH>> + ">) + (T + + <- ,NAME-RIGHT ,SHORT-ARROW-WIDTH>> + ">)> + ; + > + >> + ">) + (T + >> + ">)>) + (T + + <- ,NAME-RIGHT ,LONG-ARROW-WIDTH>> + ;>> + ">)>)> + >> + + + + ) + (T + + + + + > + >>> + T) + (T + >)>)> + > + >> + > + >)>>> + +;"Command/Object finders" + +> + +> + +) (GFX? T) "AUX" TMP) + + + + ) + (T + )> + >> + )> + )> + + > + + + + + + + )> + + )> + + )> + + > + >> + + + + + )> + > + + )> + + + )> + + )> + + )> + + + > + >> + ) + ( + >)> + + )> + > + > ;"2nd NOT added 3/14"> + )> + > + T) + (>) + ( + >> + T) + (>> + T) + (T + >)> + > + + + + + >> + + + + + + + >> + +> 2> + > + + )> + > + + > + >) + (T + > + + <- .PCF 1>>>)> + >> + + + >) + (T + >)>) + (T + + + 0> + + + > + + + + + > + ) + (T + >)>) + (T + )>)> + > + > + )> + + >)>) + (> + + ;"Above added 2/15/89 so as not to lose default..." + )> + )> + )> + > + )> + > + > + )> + .OFCN> + +)) + ) + ( + ) + ( + + ) + (T + )>) + ( + )> + 1 .STR>)>> + + + +> + +) "AUX" F CNT) + > + + > + ) + ( >> + >)> + >>> + +> + +) (PRSI? <>) + "AUX" CNT (LN ,COMMAND-START-LINE) OBJ + OTBL ROW (OCNT 0)) + + + ; >)> + ) + (.PRSI? + > + >) + (T + + )> + > + > 0> + + ) + (T + > 5> + + > + )> + > + + + >> + ) + (T + + ; + >) + (T + )> + + )>) + (T + )> + > + >)>>> + + + + + + ,TAG-NAME-LENGTH> + + > + + ) + (T + )> + > + 1>>> + + 5>> >> + +> + +)) + + + + > 13>> + + + > + ) + ( + + > + > + + + + > + ) + (T + + + + )>) + (T + )>) + ( + + .PCF>> + ) + (T + + > + )>) + ( + + ) + (T + + > + )>) + ( + + ) + (T + + > + )>) + ( + + >> + ) + (T + + > + )>) + ( + + > + > + + ) + (T )>>> + +> + + 5>>>>> + + + .PCM>> + >>>> + + 5>>> T> + + + > + + + .PCM>> + >>>> + 5>>> T> + > + + + + ; >)> + .PCM>> + .X> + + ; + >) + (T + )> + + > + > + ;"Preceding not added 5/22 for PC interpreter..." + + + > + ) + (T + )> + )> + + + .CMD> + + + + ; >)> + .PCM>> + .X> + + ; + >) + (T + )> + ; + + > + + > + ) + (T + )> + > + + +; + + +> + > + + > + + + > + <- .POS 1> + .CMD> + )> + )>> + +)) + .CHR> + ) + (> .MAX> + )>>> + + + ;> + > + )> + > + + + + + 1>> + + )> + > + + + + > + )> + > + +> + + + + >> + )>> + + + +> + +) (CHR3 <>)) + + + + )> + )> + ;"Remove inventory when TAG isn't in group..." + > + )> + > + +>> + )> + > + + > ,PARTY-MAX> + ) + (T + ,SUBGROUP>)>>> + + + + >> + +) (GC <>) (EF? T) (GFX? T) "AUX" MD TMP) + )> + )> + > + )> + >>)> + + ) + ( + ) + (> + )> + + >)> + )> + > + >> + )> + ) + (T )> + + > + >> + )> + .RM> + + + 1>) + ( ,NUL-COMMAND> + 1>) + (T + 1>)>) + (T + )>> + +> + + >> + + )> + > + +> + +>> + +> 5> ) + ( .OCMD> + + + )>>> + +> 4> + ) + ( .CMD> + 2>> + > + <* <- 4 .CNT> 2>> + + + + )>>> + + + + > + +> + + + + 6> + )> + + > + +> + + + + + > + + + + > + ) + ( + )>> + +> + + + + 6>> + +> + + + + 6> + > + +) (PRP ,P?TRAVEL-COMMANDS) + "AUX" TBL (CNT -1) CMD) + > + > 3> + ) + (> .OCMD> + + > + + ) + (T + )> + ) + ( + )>>> + + ,P?PROVISION-COMMANDS>> + + ,P?PROVISION-COMMANDS>> + +> + +> + )>> + +> + 2> 1>> + > .SIZ> + ) + ( .CMD> + )>>> + +> + +> + )> + > + )> + > + )> + > + 2> 1>> + > .SIZ> + ) + ( .CMD> + > + 2>> + > + <* <- .SIZ .CNT> 2>>)> + + + + > + )> + )>>> + +> + +> + +) "AUX" TMP OBJ) + + + >) + (T + >)> + + > + + ,CANCEL-OBJECT>) + (T + ;"Use both columns" + + )> + + > + > + + )> + > + + 2 + .STR> + T> + ) + (T + ;"More than 4 objects, use both columns" + + ;"Must crowd action, object, prep onto same line" + )> + > + + 1 + > + + 1 + .STR> + > + )> + + + ) + (T + + + )>)>> + +;"Clock stuff..." + + + +> + > + > + ) + (T + > + 1>> + + > + )>) + (T + )> + )>>> + + + >> + + 1>> + + + .TMP> + +> + +> diff --git a/intro.zabstr b/intro.zabstr new file mode 100644 index 0000000..29c5c0c --- /dev/null +++ b/intro.zabstr @@ -0,0 +1,15 @@ + + + + + + + +> )>>)> + + +> + + + \ No newline at end of file diff --git a/intro.zap b/intro.zap new file mode 100644 index 0000000..dc1eb65 --- /dev/null +++ b/intro.zap @@ -0,0 +1,151 @@ + + .SEGMENT "LAVOS" + + + .FUNCT CHECK-RESTORE:ANY:0:0 +?PRG1: PRINTI "Do you want to restore a saved game? " + INPUT 1 + EQUAL? STACK,89,121 \TRUE + CRLF + WINATTR TEXT-WINDOW,11 + RESTORE + CRLF + PRINTI "Restore failed." + CRLF + JUMP ?PRG1 + + + .FUNCT GO:ANY:0:0 +?FCN: ICALL1 CHECK-RESTORE + GET 0,19 >XFWRD + GET 0,18 >XVWRD + GET 0,17 >XHWRD + GETB 0,30 >INTERPRETER + GET 0,0 + BTST STACK,4 /?CND1 + SET 'H-BOLD,H-INVERSE +?CND1: SET 'HERE,START-LOC + GET PARTY,1 >LEADER + SET 'SUBGROUP-MODE,TRUE-VALUE + ICALL1 TURN-OFF-CURSOR + ICALL1 INIT-SCREEN + ICALL1 NEXT-DAY + ICALL1 INTRO + SET 'SCENE-OBJECT,DEFAULT-SCENE + ICALL2 SCENE,DEFAULT-SCENE + ICALL MODE,TRAVEL-MODE,TRUE-VALUE + ICALL1 PRINT-CHARACTER-COMMANDS + ICALL NEW-DEFAULT,1,-1 + SET 'ACTION,BUSY-COMMAND + GET 0,8 + BTST STACK,1 \?CND3 + SET 'SCRIPTING-FLAG,TRUE-VALUE +?CND3: ICALL QUEUE,I-INIT-RANDOM-STUFF,0 + ICALL1 PARTY-INPUT + JUMP ?FCN + + + .FUNCT ANONF-2:ANY:0:0 + CALL QSET?,ESSENCES,TRIED + ZERO? STACK \FALSE + ICALL1 INIT-SPELLS + CALL1 INIT-RUNES + RSTACK + + + .FUNCT INIT-SPELLS:ANY:0:0,TPC,FP,F,NUM,OFF + SET 'TPC,7 + PUTP SALT,P?COLOR,TAG-WHITE-POWDER + PUTP TAG-WHITE-POWDER,P?ESSENCE,SALT + FIRST? TAG-POWDERS >FP /?PRG2 +?PRG2: ZERO? FP /?REP3 + RANDOM TPC >NUM + FIRST? ESSENCES >F /?BOGUS7 +?BOGUS7: SET 'OFF,1 +?PRG8: EQUAL? OFF,NUM \?CCL12 + PUTP FP,P?ESSENCE,F + PUTP F,P?COLOR,FP + REMOVE F + DEC 'TPC + NEXT? FP >FP /?PRG2 + JUMP ?PRG2 +?CCL12: INC 'OFF + NEXT? F >F /?PRG8 + JUMP ?PRG8 +?REP3: MOVE ESSENCE-EARTH,ESSENCES + MOVE ESSENCE-AIR,ESSENCES + MOVE TAG-WHITE-POWDER,TAG-POWDERS + RTRUE + + + .FUNCT I-RTRUE:ANY:0:0 + RTRUE + + + .FUNCT INTRO:ANY:0:0,CHR,F + INPUT 1,1,I-RTRUE >CHR + CALL2 PICK-ONE,INTRO-PICS + ICALL2 GRAPHIC,STACK + ZERO? FONT3-FLAG /?CND1 + CALL2 CHANGE-FONT,4 >F +?CND1: CRLF + EQUAL? H-BOLD,H-INVERSE /?CND3 + HLIGHT H-BOLD +?CND3: ICALL2 WCENTER,STR?22 + HLIGHT H-NORMAL + CRLF + ICALL2 WCENTER,STR?23 + CRLF + ICALL2 WCENTER,STR?24 + CRLF + CRLF + ICALL2 WCENTER,STR?25 + CALL1 APPLE2? + ZERO? STACK /?CCL7 + CRLF + JUMP ?CND5 +?CCL7: CRLF + CRLF +?CND5: CALL1 APPLE2? + ZERO? STACK /?CCL10 + ICALL2 WCENTER,STR?26 + CRLF + ICALL2 WCENTER,STR?27 + CRLF + CRLF + ICALL2 WCENTER,STR?28 + CRLF + ICALL2 WCENTER,STR?29 + JUMP ?CND8 +?CCL10: ICALL2 WCENTER,STR?30 + CRLF + CRLF + ICALL2 WCENTER,STR?31 +?CND8: CRLF + ICALL2 WCENTER,STR?32 + CRLF + CRLF + ICALL2 WCENTER,STR?33 + INPUT 1 + ZERO? FONT3-FLAG /?CND11 + ICALL2 CHANGE-FONT,F +?CND11: CLEAR TEXT-WINDOW + EQUAL? CHR,48 /TRUE + PRINTI "It was a Golden Age, or so it now seems; and there are but a few who can recall those years, and fewer still who would not tremble to speak of what followed." + CRLF + CRLF + PRINTI "But we were younger then, and less wise. It seems strange now to think that we had never set foot outside our village when we were called upon to take part in a great adventure - that fateful Journey which changed our world forever...." + CRLF + CRLF + ZERO? FONT3-FLAG /?CND15 + CALL2 CHANGE-FONT,4 >F +?CND15: ICALL2 WCENTER,STR?33 + INPUT 1 + ZERO? FONT3-FLAG /?CND17 + ICALL2 CHANGE-FONT,F +?CND17: CLEAR TEXT-WINDOW + RTRUE + + .ENDSEG + + .ENDI diff --git a/intro.zil b/intro.zil new file mode 100644 index 0000000..5297cf4 --- /dev/null +++ b/intro.zil @@ -0,0 +1,163 @@ +"INTRO for + JOURNEY + (c) Copyright 1988, 1989 by Infocom, Inc. All Rights Reserved." + + + + + + + + + !\Y !\y> + + + ;"Disable scripting in 0 for a moment, to fool + SCREEN-NEEDS-INIT" + + ) + (T )>>> + + + > + > + > + > + 4>> + ;"For now..." + )> + + > + ;"No character commands initially" + + + + + + + + + + + 1> + )> + + + > + +> + + )>>)> + + + + > + ) + (T + > + > + + + + + + ) + (T + > + >)>> + > + >)>> + + + > + +> +> + +> + > + ; + ; + ; + ; + ;> + ; + ; + + ;"Something in segment 0") + (T + >)> + >)> + + > + )> + + + + + + + + + + ;"Added 5/24 for fencepost on initial screen..." + ) + (T + )> + + + + + + + + ) + (T + + + )> + + + + + + )> + + + )> + + + >)> + + + )> + > + + \ No newline at end of file diff --git a/island.zabstr b/island.zabstr new file mode 100644 index 0000000..5dc8ddf --- /dev/null +++ b/island.zabstr @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/island.zap b/island.zap new file mode 100644 index 0000000..1f0a2ee --- /dev/null +++ b/island.zap @@ -0,0 +1,96 @@ + + .SEGMENT "BOAT" + + + .FUNCT ISLAND-ENDING:ANY:0:0 + PRINTI "We stepped off the boat, and onto the shore. The sky was a brilliant blue, and not a cloud could be seen. Before us, high upon a hill, stood a grand castle, whose turrets and spires rose hundreds of feet into the air. Our steps were quick and light as we climbed the winding path that led to the castle door." + CRLF + CRLF + EQUAL? PARTY-MAX,5 \?CCL3 + ICALL2 GRAPHIC,G-ALMOST + PRINTI "Even as we arrived at the threshold, the door opened, and we were greeted by a hooded man in a blue and silver robe. He stood a while in silence then removed his cloak, revealing a familiar face." + CRLF + CRLF + PRINT IT-IS-I-ASTRIX + CRLF + CRLF + PRINTI "And then Astrix led us into a large and elegant chamber, in the center of which stood a table. Around the table sat six figures; each, like Astrix, in robes of blue and silver. But there was something unearthly about them, and their very forms seemed to shimmer and dance in the reflected sunlight." + CRLF + CRLF + PRINTI """These are the last of my race,"" Astrix said, ""Many ages ago, we Wizards led a great and successful struggle against the " + PRINT BAD-GUY + PRINTI "s. And then, our work done, we left the world you know, creating this island apart from it. Venturing forth little into your world, we have been sundered from it, and are now unable to return. Except that I, of all the Wizards, remained in your world, and, over time, befriended the races that now walk in freedom upon it.""" + CRLF + CRLF + PRINTI """Yet not all of the " + PRINT BAD-GUY + PRINTI "s were destroyed, and one remained deep within the earth, patiently awaiting the day he might again rule. That day has come, and though the Wizards care greatly for the world, and would give their lives to save it, yet they cannot.""" + CRLF + CRLF + PRINTI """Our hope lay in finding those who might, through their strength of intellect, courage, and character, bring together the Six Stones and, with them, seek out the Anvil, whose power was wielded by the hand of Evil. There have been others before you; one group that you know, four still before them. All have failed, and, yet, beyond hope, you have come!""" + CRLF + CRLF + PRINTI """But we, too, have failed,"" I said, ""for we have not found the Anvil.""" + CRLF + CRLF + ICALL GRAPHIC,FALSE-VALUE,G-WIZARDS,TOP-LEFT + PRINTI """Ah, but you have,"" Astrix replied, as he took the silver locket from around my neck and opened it, revealing a crystal stone on a slender golden chain. ""Behold!"" said Astrix, raising it up before the eyes of our party and the assembled Wizards. ""The Anvil!""" + CRLF + CRLF + PRINTI """Then the Dread Lord..."" I began." + CRLF + CRLF + PRINTI "...had the Anvil all along,"" Astrix said, finishing my thought. ""Yes, we knew he had the Anvil, yet we also knew he lusted for the other six, both in fear of the Legend and for the powers they were said to command. Alas, that those powers faded long ago. But the power of the Anvil is real, and with it, much Evil that has been done may be undone." + CRLF + CRLF + PRINTI """We shall keep the Anvil here, and it shall pass from the world with us,"" he said, placing the Anvil around my neck. ""But for now, I believe it is yours!""" + CRLF + CRLF + PRINTI "Praxix now turned to the elder Wizard and related our experience with Umber. Who was he, Praxix asked, and what was the magic that he possessed? There was a faint murmur from the other Wizards, followed by a tense silence." + CRLF + CRLF + PRINTI """We know him not,"" Astrix replied firmly. ""Now, come! There is much to do!""" + ICALL1 DIVIDER + PRINTI "We stayed a long while at the castle, for the wisdom of the Wizards was great, and there was much to learn. And though his name was never spoken, the dark memory of Umber rested deeply, uneasily in our minds, where it lay forever bathed in the black glow of an unearthly light." + CRLF + CRLF + PRINTI "When we did finally return to our homes, the winter's chill had passed, and the meadows and pastures were a brilliant green - it was springtime in the dawn of a Golden Age." + CRLF + CRLF + SET 'GAME-WON?,TRUE-VALUE + CALL1 ENDING + RSTACK +?CCL3: ICALL2 GRAPHIC,G-ALMOST + PRINTI "The massive door opened as if by magic. Before us, the entrance hall led down a long, oak-panelled corridor to a large and elegant chamber. Inside, a solitary man sat, head down, at huge banquet table." + CRLF + CRLF + PRINTI "He turned to us slowly, and cast his hood from his face. We stood awestruck by the sight." + CRLF + CRLF + PRINT IT-IS-I-ASTRIX + CRLF + CRLF + PRINTI """We had hoped you were the ones,"" he said with a sigh." + CRLF + CRLF + PRINTI """We?"" I said, again gazing around the empty chamber." + CRLF + CRLF + PRINTI """It does not matter anymore,"" he said, ignoring the question. ""You have found the Six Stones, and are by any accounting brave, resourceful, and wise. But the Anvil remains hidden from us, and without it we cannot hope to destroy the " + PRINT BAD-GUY + PRINTI ". I am sorry indeed - not only for yourselves, but for your fallen friends and for all that must abide the Darkness that is to come." + CRLF + CRLF + PRINTI """Go, now, return to your families and friends. For the storm will come, swift and terrible, and all will be changed.""" + CRLF + CRLF + PRINTI "And though we had a thousand questions, Astrix was too distracted to answer. He led us from the castle, and " + GET INT-STR,PARTY-MAX + PRINT STACK + PRINTI " eagles came at his command, swiftly bearing us back to our lands, far to the north." + CALL1 BAD-ENDING + RSTACK + + .ENDSEG + + .ENDI diff --git a/island.zil b/island.zil new file mode 100644 index 0000000..fa3f15f --- /dev/null +++ b/island.zil @@ -0,0 +1,120 @@ +"ISLAND for + JOURNEY + (c) Copyright 1988, 1989 Infocom, Inc. All Rights Reserved." + + + + + + + + + + + + + + ,G-WIZARDS ,TOP-LEFT> + + + + + + + + + + + ) + (T + + + + + + +
+ + + + + + + + + + + + + + + + >)> + +) + (WIDTH %<- ,INIT-TEXT-LEFT 3>) + (START-Y 2) + (START-X 2) + (END-Y %<- ,COMMAND-START-LINE 2>) + (END-X %<- ,INIT-TEXT-LEFT 2>) + (CUR-Y 2) + (CUR-X 2)>> \ No newline at end of file diff --git a/zan.zabstr b/zan.zabstr new file mode 100644 index 0000000..9c5c589 --- /dev/null +++ b/zan.zabstr @@ -0,0 +1,968 @@ + + + + + < +REMOVE ,SPIRIT-STONE> )> < +TELL "\"I have not heard of such an island,\" Praxix said, \"though I am not +unfamiliar with lore and legend.\"" CR CR> >) (EXIT < +EXECUTE () >) (ACTION )>)> + + + + + < +PRINTI "\"It searches for us,\" Praxix said glumly, \"and we are scarcely +protected from its view! I must think....\""> )>)> + + + < +TELL "As we descended through the open plains that led to the sea, it seemed +that a cloud had passed before the sun, and the land was cast in shadow. +But this was no cloud, but rather the form of some large +creature that came from the north, spinning and diving through the sky +like some bird of prey looking for its next meal." CR CR> >) (ACTION < +REMOVE-TRAVEL-COMMAND> < +PRINTI "\"None of my spells will protect us, but...\" He paused again, tapping his +head with his staff as if trying to unjam some piece of mental machinery. +\"Now that I think of it, I can recall that one combination of essences +produces a kind of fog or mist. All I need do is figure out which two...\""> < +CRLF>