!SEWER.TEC - AN ADVENTURE GAME WRITTEN IN TECO! !INITIALIZE! 0ES 137ET 1ED !OPEN FILE! ERSEWER.DAT Y <+1"E0;' A> !INITITALIZE MACROS! !REG A--MACRO THAT TAKES # & @ POINTED TO BY 2 AND MOVES IT TO SPOT POINTED TO BY 3: RETURNS -1 IN QREG 0 IF FOUND, 0 IF NOT : INCREMENTS 2 AND 3 TO POINT TO NEXT ONE! @I*Q2J .U1 \U0 Q0"EOEXIT1' Q2-Q3"GO1.1' Q3J Q0\ I@ .U3 -1U0 Q1J D .U2 OEXIT1 !1.1! Q1J D .U2 Q3J Q0\ I@ .U3 -1U0 !EXIT1! * J 3XA 3K !REG B--MACRO THAT PUTS NEXT WORD IN REG 0, 1 IN REG 1 IF EOL! I<0A-32"N 0;' C> .U0 <0A-34"L 0;' C> .U1 Q0,Q1X0 0U1 0A-13"E 1U1'  J XB K !REG C--MACRO THAT POSITIONS POINTER TO ROOM DATA! @I*J :SROOM DATA"S' Q7:S%"S' * J XC K !REG D--MACRO THAT RETURNS 0 IN 0 IF THING IN 2 NOT IN ROOM, 1 IF IS! @I*.U0 [0 MC 3:S^"S' 0U0 <\U1 Q1"E 0;' Q1-Q2"E 1U0 0;' C> ]1 Q1J * J XD K !REG E--MACRO THAT RETURNS 0 IN 0 IF THING IN 2 NOT HELD, 1 IF IS! @I*.U0 [0 J :SPOSSESIONS%"S' 0U0 <\U1 Q1"E 0;' Q1-Q2"E 1U0 0;' C> ]1 Q1J * J 2XE 2K !REG F--MACRO THAT PUTS THING # IN 2 OR 0 IN 2 IF NOT FOUND! @I*J STHING DATA% !6.1! :SQ9"U 0U2 O6EXIT' .U0 2:S^"S' 0A-42"NO6.1' .U1 Q0,Q1:FB^"S' \U2 !6EXIT! * J 2XF 2K !REG G--MACRO THAT TYPES OUT! I  J XG K !REG H--MACRO THAT POSITIONS THING! @I*J :STHING DATA"S' Q2:S%"S' * J XH K !REG 6,I,J,K--FOR DELETION ON CRT! !REG 6--AUXILLIARY RUBOUT CHARACTER! 8U6 !REG I--TEXT TO BE PRINTED AFTER RUBOUT SEEN! 8I32I8I B,.XI0,.K !REG J--TEXT TO BE PRINTED AFTER AUX RUBOUT SEEN! 32I8I 0,.XJ 0,.K !REG K--TEXT TO BE PRINTED WHEN ^U SEEN! I^U13I10I 0,.XK 0,.K [Excuse me while I smush myself]  !SMUSH OURSELVES! HK !OPEN FILE! ERSEWER.TEC Y <+1"E0;' A> J 2S!MAIN LINE! -L B,.K HXZ !OPEN FILE! ERSEWER.DAT Y <+1"E0;' A> !ANNOUNCE OURSELVES! J MG .U0 B,Q0K K !INITIALIZE ROOM #, POSSESIONS! J \U7 J K .U2 :SPOSSESIONS%"S' .U3 J K !RUN SMUSHED VERSION! !EC! MZ OLOOK !MAIN LINE! !GET INPUT! ] J <^TU0 Q0I Q0^T Q0-10"E 0;' Q0-127"E 0U0 :GI' Q0-Q6"E 0U0 :GJ' Q0-21"E 0K :GK ] 'Q0"E -D.-B"N-D|]' ' > !PUT VERB IN 8, NOUN IN 9! J MB [0]8 Q1-1"NMB [0]9' J K !GET VERB #! J G8 ."EOWHAT' 0K J :SVERBS%"S.U1' 0U0 Q0-1"NOWHAT' Q1J :SQ8"UOWHAT' :S^"UOWHAT' \U8 Q8"EODATA ERROR' !GO TO APPROPRIATE ROUTINE ELSE BARF! Q8-1"EOMOVE' Q8-2"EOTAKE' Q8-3"EODROP' Q8-4"EOLOOK' Q8-5"EOINVENTORY' Q8-6"EOOPEN' !WHAT! What?  OMAIN LINE !MOVE! J G9 .U0 J ::SNORTH"S0KIN.U0OMOVE.0' ::SSOUTH"S0KIS.U0OMOVE.0' ::SEAST"S0KIE.U0OMOVE.0' ::SWEST"S0KIW.U0OMOVE.0' ::SUP"S0KIU.U0OMOVE.0' ::SDOWN"S0KID.U0OMOVE.0' !MOVE.0! J 0,Q0X9 0,Q0K MC 2S^ .U0 S^ .U1 Q0,Q1:FBQ9"UONO WAY' \U2 Q2"NOMOVE1' C \U2 Q2"EOMOVE2' MD Q0"EOCANT GO' !MOVE2! C \U2 Q2"EC OMOVE3' ME Q0"EOCANT GO' C !MOVE3! \U2 Q2"EODATA ERROR' !MOVE1! [2]7 0A-88"E C \U0 OQUIT' 0A-89"E C \U0 JSSPECIAL MESSAGES Q0S% MG' OLOOK !NO WAY! There is no way to go that direction.  OMAIN LINE !CANT GO! MC 2S^ .U0 S^ .U1 Q0,Q1:FBF"S\U0 JSSPECIAL MESSAGES Q0S% MG' You can't move that direction.  OMAIN LINE !TAKE! MF Q2"EODONT SEE' Q2U4 ME Q0"NOALREADY HAVE' MD Q0"EODONT SEE' MH 2:S^"S' C 0A-84"NOCANT TAKE' J :SPOSSESIONS%"S' .U3 MC 3S^ .U0 <\U1 Q1"E0;' Q1-Q2"E0;' C .U0> Q0U2 MA OMAIN LINE !DONT SEE! I see no  :G9  here.  OMAIN LINE !ALREADY HAVE! You are carrying it!  OMAIN LINE !CANT TAKE! You can't take it.  OMAIN LINE !DROP! MF Q2 "EODONT HAVE' ME Q0"EODONT HAVE' MC 3S^ .U3 J SPOSSESIONS% .U0 <\U1 Q1"E0' Q1-Q2"E0;' C .U0> Q0U2 MA OMAIN LINE !DONT HAVE! You do not have it.  OMAIN LINE !LOOK! MC :S^"S' MG 2:S^"S' <\U2 Q2"E0;' C .U3 MH 3:S^"S' MG Q3J> OMAIN LINE !INVENTORY! J :SPOSSESIONS%"S' <\U2 Q2"E0;' .U1 MH 3:S^"S' MG Q1J C> OMAIN LINE !OPEN! MF Q2"EODONT SEE' Q2U4 MD Q0"NOOPEN1' ME Q0"EODONT SEE' !OPEN1! MH 2:S^' 2C 0A-79"NOCANT OPEN' C .U3 \U2 Q2"EOOPEN2' ME Q0"EOCANT OPEN' Q3J !OPEN2! 2R D I  :S%"UODATA ERROR' 2:S^"S' D I* MC 3:S^"S' .U0 <\U1 Q1"E0;' Q1-Q4"E0;' C .U0> Q0J %4\ OLOOK !CANT OPEN! You can't open it.  OMAIN LINE !QUIT! J SSPECIAL MESSAGES Q0S% MG HKEX !END OF SEWER.TEC!