ţţ 6dX;SAVE#D:SPYPT2.M65nX;x X;--------------------------;‚ X; Secret Agent (c) 1988 ;Œ X; By: Barry Kolbe ;– X; Second half of main ;  X; program ;Ş X;--------------------------;´X;ž X;Wear scuba gear or gas maskČX;Ň „DWEAQ‚DOÜR>;;scuba?ć HƒWTA;;nođQ†OBJTBL;;have it?úR>€ FƒWTB;;yes#…HAVNT†PRINT ‚M5;;'haven't got':"X;,ƒWTBQ>;;set flag6P‚FE@†PRINT ƒM17;;'Wearing ..'J:TX;^ƒWTAR>;;gas mask?h HƒWTC;;norQ†OBJTBL;;own it?|R>€†H…HAVNT;;noQ>;;set wear flagšP‚FH¤†PRINT ƒM31;;'Wearing...'Ž:¸ƒWTC!…NOCAN;;'Can't do that'ÂX;Ě X;TurnÖX;ŕ„DTURQ…WHERE;;room?ęR>;;stairwellôHƒTR1;;nopeţQ‚DOR>;;hook? FƒTR2;;yesƒTR3!…NOCAN;;'Can't'&ƒTR2Q>;;new exit west0P†EXITABu:!…LKSEE;;showDX;NƒTR1R>;;stairwellX HƒTR4;;nobQ‚DOl R>;;knobvHƒTR3;;'Can't'€Q‚FD;;flip flagŠN>;;electric floor”P‚FDžƒTR5!…PCLIK;;say 'Click'¨ƒTR4R>;;stairwell˛FƒTR5;;just 'Click'źR> ;;west end?Ć FƒTR5;;yesĐƒTR6R> ;;ape room?Ú HƒTR3;;noäQ‚DOî R>;;knobřHƒTR3;;'Can't'Q>;;loose ape! P‚FI …PCLIK;;'Click' Q> ;;south exit*P†EXITAB7;;now4 !…LKSEE>X;HX;flip switchRX;\„DFLIQ…WHERE;;room?fR>;;office?p HƒFCH;;nozQ‚FA;;is safe visible„ HƒFEV;;yesŽQ‚DO˜R>;;switch?˘ FƒFES;;yesŹ ƒFEV!†NOSPEC;;'Nothng happns'śƒFESQ†OBJTBL;;have itŔR>€Ę FƒFET;;yesÔ !…HAVNTŢƒFETQ‚FB;;opened before?č HƒFEU;;noň!„PDON;;'Done'üƒFEUN>;;set flagP‚FBQ>;;show rodP†OBJTBL$†PRINT ƒM29;;'Safe open'. …PCLIK;;'Click'8 !…LKSEEBX;LƒFCHR>;;chem lab?V HƒFEV;;no`Q‚DOjR>;;switch?t HƒFEV;;no~Q‚FG;;X-ray machineˆN>’P‚FG;;fall throughœ!…PCLIK†PRINT ƒM28;;'.Click..'Ś:°X;şX;Examine somethingÄX;Î „DEXAQ‚DOŘR>;;electronicâHƒEE1;;device?ěQ†OBJTBLöR>€HƒEVB  †PRINT ƒM30;;'On/Off switch':ƒEE1R>;;baton?(HƒEE22Q†OBJTBL<R>€FFƒEE3PƒEVB!…HAVNT;;'Haven't got'ZƒEE3†PRINT ƒM54;;'Gravityd :;;switch'nƒEE2†PRINT ƒM12;;'Nothing 'x:‚X;ŒX;Wave an object–X; „DWAV$‚DO;;have it?Ş Q†OBJTBL9´R>€ž FƒWA1;;yesČ!…HAVNT;;'Don't have'ŇƒWA1(>;;baton?ÜH†NOSPEC;;'Nothing'ć Q…WHEREđR>;;in right room?úFƒWA4 †NOSPEC†PRINT ƒM18;;'Nothing:;;special'ƒWA4Q‚FF;;flip flag"N>,P‚FF6FƒWA2@Q>˙;;close exitJƒWA3P†EXITABŒT !…LKSEE^ƒWA2Q>;;open easthHƒWA3;;exitr:|X;†X;Shoot the ___ with the gunX;š„DSHOQ>;;message flag¤P‚FK;;for CKWITHŽQ‚DO¸R>;;shoot robot? HƒGAP;;noĚƒSF2Q>;;set flagsÖP…WITHF;;auto WITHŕ Q>;;gunęP‚PO;;as prep objectô!ƒSF1;;check it outţƒGAPR>$;;shoot ape? FƒSF2;;yesQ‚DO;;shoot gun?R>&HƒSF10†PRINT ƒM50;;'At what?'::DƒSF1Q…WHERENR>;;in robot room?X H„SAPE;;nob$>;;robot=DOl%>;;gun =POv †CKWITH;;check it€Q‚FJ;;robot alive?Š HƒSS3;;yes”ƒSS5!†WHAFOR;;'What for?'žƒSS3Q†RANDOM;;see if hit¨R>d˛EƒSS2;;missźQ>;;a hitĆP‚FJ;;robot deadĐQ>4ƒD1F;;change messageÚ P†ROBROMä Q>5ƒD1FîP†ROBROMř!…LKSEE;;show itX; !ƒSS2†PRINT ƒM33;;'You missed'Q†RANDOM;;see if robot  R>´;;hits*DƒSS44†PRINT ƒM35;;robot missed>:HƒSS4Q>;;gotcha!R !„DEAD\X;f„SAPER> ;;ape room?pF„SAP1;;yesz!…NOCAN;;'Can't do that'„„SAP1$>$;;ape =DOŽ%>;;gun =PO˜ †CKWITH;;check mostly˘Q‚FI;;for ownershipŹFƒSJ1;;is ape out?ś!…NOTYT;;no->'Not yet'ŔƒSJ1Q‚F6;;alive ape?Ę FƒSS5;;noÔQ†RANDOM;;hit or miss?ŢR>ĽčDƒSA2ňQ>;;one dead apeüP‚F6 !…LKSEE;;tell us all !ƒSA2†PRINT ƒM33;;'You missed' Q†RANDOM;;see if ape$ R>–;;gets you. EƒSA3;;yes8 †PRINT ƒM37;;'Charging'B :L ƒSA3Q>;;'Crushed!'V !„DEAD` X;j "X;Check: correct Direct Object,t !X;Prepositional Object, use of~ X;'WITH' and ownership of POˆ "X;Enter with X=test value of DO’ X;Y= test value of POœ X;Ś †CKWITH(‚DO;;X = DO?° HƒWP1;;nawhş )‚PO;;Y = PO?Ä HƒWP2Î Q†OBJTBL8;;have Y?Ř R>€â HƒWP3;;noě Q…WITHF;;say 'WITH'?ö FƒWP2;;no :;;go ahead ƒWP17;;pull return 7 !†WHAFOR;;'What for?'( X;2 ƒWP27;;pull return< 7F Q‚FK;;message flagP FƒWP5Z !…NOTYT;;'Not yet'd ƒWP5!…NOCAN;;'Can't do'n X;x ƒWP37‚ 7Œ !…HAVNT;;'Haven't got'– X;  X;Lift the plantŞ X;´ „DLIFQ…WHERE;;in stairs?ž R> Č H†WHAFOR;;no!Ň Q‚DOÜ R>&;;plant?ć H†WHAFOR;;so why do it?đ Q‚F5;;lift before?ú F†WHAFOR;;yes N>;;set flag P‚F5 Q> ;;show key" P†OBJTBL, !…LKSEE;;show us6 #†WHAFOR†PRINT ƒM27;;'What for?'@ :J X;T X;Move an object^ X;h „DMOVQ…WHEREr R>;;office?| HƒMVC;;no† Q‚DO R>);;picture?š FƒMV2;;yup¤ ƒMV1!…NOCAN;;no can doŽ ƒMV2Q‚FA;;safe already¸ F„PDON;;visible? N>;;no. set flagĚ P‚FAÖ Q>4„DSAF;;say itŕ P†SAFROMę Q>5„DSAFô P†SAFROMţ !…LKSEE X; „PDON†PRINT ‚M2;;'Done' :& X;0 ƒMVCR>;;storage?: HƒMV1;;noD Q‚DON R>;;cabinet?X HƒMV1;;nob Q‚FC;;moved before?l F„PDON;;yesv N>€ P‚FC;;set flagŠ Q>;;show exit down” P†EXITAB§ž !…LKSEE¨ X;˛ X;Push (or Press) buttonsź X;Ć „DPUSQ…WHERE;;storage?Đ R>Ú HƒPS2;;noä Q‚DOî R>';;red button?ř HƒPS3 Q>;;turn off lasers ƒPS4P‚F2 !…PCLIK;;'Click' ƒPS3R>(;;blue?* FƒPS1;;yes4 ƒPS6!…NOCAN;;'Can't '> ƒPS1Q>;;turn lasers onH HƒPS4R ƒPS2R>;;small room\ HƒPS6;;(airlock)f Q‚DOp R>(;;blue buttonz HƒPS6;;no„ Q>;;open eastŽ P†EXITAB°˜ Q>˙;;close north˘ P†EXITABŽŹ  …PCLIK;;'Click'ś !…LKSEEŔ X;Ę X;Player's InventoryÔ X;Ţ †INVENT$>;;'You have:'č ƒILLQ„YOUH9ň P„IBUF9ü 2(> HƒILL%>;;see which ones$ƒILQQ†OBJTBL8;;you own.R>€8HƒILN;;no this oneBCL 5;;save YVT?;;x2 for an` ?;;offsetjQ†OBJNAM8;;into namestP‚SL~Q†OBJNAM8ˆ P‚SL’%>;;move nameœƒILMQ@‚SL7;;to bufferŚFƒILP;;done at 0° P„IBUF9ş2Ä3ÎHƒILMŘƒILPQ> ,;;put in ', 'â P„IBUF9ě2öQ>  P„IBUF9 2 7;;get Y?(ƒILN3;;next object2)>†NUMSHO;;at end?< HƒILQ;;noF(> ;;X still 10?P HƒILW;;noZ%>;;must havedƒNOHQ„NOTH8;;'Nothing!'n P„IBUF9x2‚3Œ)> –HƒNOH !ƒILU;;print itރILWQ>;;put in 'EOL'´ P„IBUF9žQ> ;;erase last ,Č P„IBUF9ŇƒILU†PRINT „IBUF;;print itÜ:ćX;đ X;You have failed the missionú!X;Enter with A = type of deathX;„DEADT?;;x2 >;;offset"Q‡DEADTAB9;;get message,?;;high byte6 Q‡DEADTAB9@>;;low of addressJ †PRINTE;;print itT†PRINT ƒM41;;'Failed'^ !†WHANOWhX;r"X;Before allowing a turn see if| X;the player is in the ape or†$X;robot room. Don't allow them toX;move out.šX;¤†APEROBQ…WHEREŽR>;;with robot?¸H…DOAPE;;noÂQ‚FJ;;robot alive?Ě HƒEYA;;yesÖ :;;whew!ŕƒEYA ‡INTPRET;;get commandęQ…ERFLG;;test for errorôHƒEYB;;errorţQ‚VP;;get verb #R> ;;shoot?HƒEYB;;nope!„DSHO;;goto shoot&ƒEYBQ†RANDOM;;robot shoots0R>Č:DƒEYCDQ>;;hit youN!„DEAD;;done forX!ƒEYC†PRINT ƒM35;;robot missesb7;;pull returnl7v!„DOIN;;get input€X;Š…DOAPER> ;;ape room?” H„NOEN;;nožQ‚FI;;in cage?¨H„NOEN;;yes˛Q‚F6;;alive?źF„NOEN;;deadĆ ‡INTPRET;;get commandĐ Q…ERFLGÚHƒEYD;;erroräQ‚VP;;get verb #îR> ;;shoot?ř HƒEYD;;no!„DSHO;;do shoot ƒEYDQ†RANDOM;;see if apeR>‚;;gets you E„NOEN;;escape for now*747>Q>;;crushes youH !„DEADR „NOEN:\X;fX;Check for traps inpX;various roomszX;„†CKDEADQ…WHEREŽR>;;hallway?˜HƒDI2˘Q‚F2;;lasers on?Ź F„CDOK;;nośQ>;;blasted!Ŕ !„DEADĘ„CDOK:;;ok so farÔƒDI2R>;;security?ŢHƒDI3čQ‚FD;;electric floorň F„CDOK;;oküQ>;;Zzzzzit !„DEADƒDI3R>;;X-ray room?HƒDI4$Q‚FG;;switch.H„CDOK;;off!8Q>;;radiationB !„DEADLƒDI4R>;;security?VHƒDI5`Q‚FH;;gas mask on?jF„CDOK;;yestQ>;;poison gas~ !„DEADˆƒDI5R>;;tunnel?’ H„CDOKœQ‚FE;;wearing scuba?Ś F„CDOK°Q>;;drownedş !„DEADÄX;Î X;Check the status of objectsŘX;and show the scoreâX;ě†DOSCORQ>;;zeroö P…SCORE%>;;check for the ƒDYAQ†OBJTBL 8R>€;;4 objectsFƒUPO(ƒDYB12IƒDYA<Q†OBJTBL ;;don'tFR>€;;count memoPHƒDYC;;next timeZ"…SCORE;;(-1 for memo)dƒDYCQ…SCORE;;I'll put themnL>;;next to onexP…PLACE%;;another‚:;;show scoreŒƒUPO#…SCORE;;plus 1–!ƒDYB X;ŞX;See if you've won after an´X;escape from the labžX;Č!†ENDGAM†PRINT ƒM42;;'Escaped'Ň #†ROWCRSÜQ…SCORE;;win?ćR>đ H…NOWINú†PRINT ƒM44;;You won! ƒENL!ƒENL …NOWIN†PRINT ƒM41;;not quite !†WHANOW"X;,X;Save initial condition in6X;the event of a restart@X;J„KEEPQ>4…SAVST;;start ofT PJ;;data^ Q>5…SAVSTh PJrQ>4„HOLD;;backup area|P‚ML† Q>5„HOLD P‚MLšƒKK3%>;;one byte at¤Q@J7;;a timeŽ P@‚ML7¸#‚ML;;bump pointersÂHƒKK1Ě #‚MLÖ ƒKK1#JŕHƒKK2ę #JôƒKK2QJ;;at theţR>5…SAVEN;;end yet?HƒKK3QJ R>4…SAVEN&HƒKK30 :;;done:X;DX;Ok. Something happened toN X;bring us here. Either pressXX;START or SYSTEM RESETbX;l#†WHANOW†PRINT ƒM49;;Press STARTvƒNNWQ†CONSOL;;check consol€R>;;START?ŠF„REDO;;try again”HƒNNWž„REDOQ>4…SAVST;;move data¨PJ;;back to˛Q>5…SAVST;;where theźPJ;;program canĆQ>4„HOLD;;use itĐP‚MLÚ Q>5„HOLDä P‚MLî ƒKR1%>ř Q@‚ML7P@J7 #‚MLHƒKR2  #‚ML* ƒKR2#J4HƒKR3> #JHƒKR3QJ;;done yet?R R>5…SAVEN\HƒKR1fQJp R>4…SAVENzHƒKR1„!…BEGIN;;start overŽX;˜ X;Data˘X;Ź†SINGLE A†NSEWUDAś…INTOB A…INTO AŔ…WITHB A…WITH AĘƒTHE A„THE AÔX;ŢX;Table of Room NamesčX;ň‡ROOMTAB ‚R0;;0 outsideü ‚R1;;1 entrance ‚R2;;2 reception ‚R3;;3 conference ‚R4;;4 kitchn$ ‚R5;;5 security. ‚R6;;6 experiment8 ‚R7;;7 storageB ‚R7;;8 storageL ‚R8;;9 animalV ‚R9;;a west end` ‚RA;;b hallwayj ‚RB;;c cafeteriat ‚RC;;d stairwell~ ‚RC;;e stairwellˆ ‚RD;;f office’ ‚RE;;10 chem labœ ‚RF;;11 x-rayŚ ‚R5;;12 security° ‚RC;;13 stairwellş ‚RG;;14 computerÄ ‚RH;;15 photo labÎ ‚R7;;16 storageŘ ‚R5;;17 securityâ ‚RC;;18 stairwellě ‚RD;;19 officeö ‚R5;;1a security ‚R7;;1b storage  ‚RI;;1c electronic ‚RJ;;1d small(air) ‚RK;;1e tunnel( ‚RL;;spacer not used2 ‚RL;;20 cage<X;FX;Direction table for namesPX;Z†DIRECT „XNOR;;northd „XSOU;;southn „XEAS;;eastx „XWES;;west‚ ƒXUP;;upŒ „XDOW;;down–X; …SAVST;start of saveŞX;´…WHERE;;current roomž…CARRY;;# objs carriedČ…SCORE;;what else?ŇX;ÜX;Object Location TablećX;đX;0-31 = In a RoomúX;$FF = Not VisibleX;$80 = Owned by PlayerX;†OBJTBL ˙;;badge" ˙;;nailfile, ˙;;card6 ;;pad@  ;;disk 5J ˙;;gunT ˙;;baton^ ;;boxh ˙;;gas maskr ;;folder 10| ˙;;vial† ˙;;formula ;;memoš ˙;;microdot¤ ˙;;program 15Ž ˙;;rod¸ ˙;;coin ˙;;small keyĚ ;;scubÖ ;;elec 20ŕ ;;flashę ˙;;lar kô ˙;;combo ěáóô ąţX;X;Table of ExitsX;X;$FF=noexit # = rooms&X;0†EXITAB ˙=˙=˙=: ˙=˙;;0 outsideD ==˙=N ˙=˙;;1 entranceX ˙==˙=˙b ˙=˙;;2 receptionl ==˙=˙v ˙=˙;;3 conference€ ˙==˙= Š ˙=˙;;4 kitchen” =˙== ž ˙=˙;;5 security¨ ˙==˙= ˛ ˙=˙;;6 experimentź =˙=˙=˙Ć ˙=˙;;7 storageĐ =˙=˙=˙Ú ˙=˙;;8 storageä  =˙==˙î ˙=˙;;9 animalř  = = =˙ ˙=˙;;a west end   =˙==  ˙=˙;;b hallway  ˙= ==˙* ˙=˙;;c cafeteria4 ˙= =˙=˙> =;;d stairsH ˙=˙==˙R ˙= ;;e stairs\ ==˙=˙f ˙=˙;;f officep ˙=˙==z ˙=˙;;10 chem lab„ ˙==˙=Ž ˙=˙;;11 x-ray lab˜ ==˙=˙˘ ˙=˙;;12 securityŹ =˙=˙=˙ś ˙=;;13 stairsŔ ˙=˙==˙Ę ˙=˙;;14 computerÔ =˙==˙Ţ ˙=˙;;15 photo labč =˙=˙=˙ň ˙=˙;;16 storageü ˙==˙= ˙=˙;;17 security ˙==˙=˙  =˙;;18 stairs$ ˙==˙=˙. ˙=˙;;19 office8 ===˙B ˙=˙;;1a securityL =˙=˙=˙V ˙=˙;;1b storage` =˙=˙=j ˙=˙;;1c electronict =˙=˙=˙~ ˙=˙;;1d small roomˆ ˙=˙=!=˙’ ˙=˙;;1e tunnelœ ˙=˙=˙=˙Ś ˙=˙;;$21 out!°  =˙=˙=˙ş ˙=˙;;$20 cageÄX;ÎX;Flag TableŘX;â‚F1 ;;desk R2 lockě‚F2 ;;lasers R5 onö‚F3 ;;vend mach R4‚F5 ;;plant Rd key ‚F6 ;;ape alive R9‚F7 ;;desk R1‚F8 ;;cabinet R19(‚F9 ;;box - gas2‚FA ;;picture moved<‚FB ;;safe RfF‚FC ;;cabinet movedP‚FD ;;elect. floorZ‚FE ;;wear scubad‚FF ;;doorn‚FG ;;x-raysx‚FH ;;wear gas mask‚‚FI ;;ape in cageŒ‚FJ ;;robot alive–‚FK ;;shoot msg ‚FM ;;used combinatŞ‚FN ;;used large key´X;ž…SAVEN;end of saveČX;ŇX;Tables of offsets intoÜX;the table of ExitsćX;Multiples of 6đX;ú„EXOF == == =$=*=0=6 <=B=H=N=T Z=`=f=l=r" x=~=„=Š=, –=œ=˘=¨=Ž6 ´=ş=Ŕ=Ć=Ě@X;JX;Verb Table - only theTX;first 3 letters are used^X;h…VERBT AGETDROOPEREAINSAr A’WEATURFLIEXAWAVSHOA| A’TAKLIFMOVPUSUNLPREA† AƒPUTAX;š!X;Noun Table - first 3 letters¤X;Ž…NOUNT ABADNAICARPADDISA¸ A’GUNBATBOXGASFOLVIAA A’FORMEMMICPRORODCOIAĚ A’SMASCUELEFLALARCOMAÖ A’KNOHOOSWIROBCABDESAŕ A’SAFSLOCAGLEVLOCVENAę A’MACAPEDOOPLAREDBLUAô APICENLDRIHOLALLAţX; X;Objects X; ƒOB0 A…badgeA=& ƒOB1 AˆnailfileA=0 ƒOB2 A„cardA=: ƒOB3 AƒpadA=D ƒOB4 A„diskA=N ƒOB5 AƒgunA=X ƒOB6 A…batonA=b ƒOB7 AƒboxA=l ƒOB8 Aˆgas maskA=v ƒOB9 A†folderA=€ ƒOBA A„vialA=Š ƒOBB A‡formulaA=” ƒOBC A„memoA=ž ƒOBD AˆmicrodotA=¨ ƒOBE A‡programA=˛ ƒOBF AƒrodA=ź ƒOBG A„coinA=Ć ƒOBH A‰small keyA=Đ ƒOBI AŠscuba gearA=Ú ƒOBJ A‘electronic deviceAä  î ƒOBK Aflashing ballA=ř ƒOBL A‰large keyA=!ƒOBM A‹combinationA= !X;!X;Table for the object names !X;*!†OBJNAM ƒOB04! ƒOB1>! ƒOB2H! ƒOB3R! ƒOB4\! ƒOB5f! ƒOB6p! ƒOB7z! ƒOB8„! ƒOB9Ž! ƒOBA˜! ƒOBB˘! ƒOBCŹ! ƒOBDś! ƒOBEŔ! ƒOBFĘ! ƒOBGÔ! ƒOBHŢ! ƒOBIč! ƒOBJň! ƒOBKü! ƒOBL" ƒOBM