Thread View: comp.sources.apple2
1 messages
1 total messages
Started by Jonathan A. Chandross
Sat, 01 Jun 1991 02:44
v001SRC054: Inmate Parser -- ATN Based, Part04/05
Author: Jonathan A. Chandross
Date: Sat, 01 Jun 1991 02:44
Date: Sat, 01 Jun 1991 02:44
1613 lines
45430 bytes
45430 bytes
Submitted-by: Phil Goetz (goetz@cs.buffalo.EDU) Posting-number: Volume 1, Source:54 Archive-name: util/parser/inmate/part04 Architecture: ANY_2 Version-number: 1.00 =transit -* -SAVETRANSIT28 -OBJ .EQ 1 -DEST .EQ 2 -INSTR .EQ 3 -EXCE .EQ 4 -* TRANSITION ACTIONS -* CAN USE SUB FOR MULT IF OBJS ALSO HAVE 6 BYTES -TV LDY #0 - STY MISC+1 - STY TEMP+1 - LDA WVERB MISC,+1=WVERB*6 - STA TEMP - ASL - BCC .0 - INC TEMP+1 -.0 STA TEMP - ROL MISC+1 - ASL - ROL MISC+1 - ADC TEMP C=0 - BCC .1 - INC MISC+1 - CLC -.1 ADC #VERBS - STA MISC - LDA /VERBS - ADC MISC+1 - ADC TEMP+1 - STA MISC+1 -.2 LDA (MISC),Y - STA CASEFRAME,Y - INY - CPY #6 - BNE .2 -RESVDAT LDY #1 -.1 LDA CASEFRAME+4,Y - STA VDAT+1,Y - DEY - BPL .1 -TRTS RTS -TPLACE LDA WNOUN-1,X USED ONLY FOR NON-NOUN PLACES (NSEW..) - STA SPLACE - RTS -TPOBJ LDX NPSP - LDA #TLPOBJ - STA NPSTACK,X - INX - LDA /TLPOBJ - JMP TNP -TLPOBJ JSR COMBINE - LDA NOUNLIST+1 - BNE .2 >1 PLACE - LDA NOUNLIST - BNE .1 - JMP DNS 0 PLACE -.1 CMP #LP+1 - BCS NAP NOT A PLACE - STA SDEST - LDA #7 - JMP OUTOFNP -.4 .US /GIVE ONLY ONE PLACE.@=/ -.2 LDY /.4 - LDA #.4 - JMP PS -NAP LDY /.6 - LDA #.6 - BCS NAP-3 ALWAYS -.6 .US /THAT'S NOT A PLACE!@=/ -* TADV, T9.10, T9.E UNUSED -TADV LDA WNOUN-1,X - STA SADV - RTS -T9.10 JSR LOADNUM - STA SPT - STY SPT+1 - RTS -T9.E JSR LOADNUM - STA STIME - STY STIME+1 - RTS -TEXC LDA #EXCE - STA NTYPE - LDX NPSP - LDA #TLEXC - STA NPSTACK,X - INX - LDA /TLEXC - JMP TNP - RTS -TLEXC JSR EXCL - LDA #5 - JMP OUTOFNP -EXCL LDY #0 -.1 LDA NOUNLIST,Y - BEQ .3 NO MORE - JSR RFO - INY - CPY #20 - BNE .1 -.3 RTS -* REMOVE A FROM OBJLIST -* FIND & ZERO IT IN OBJLIST -RFO LDX #21 -.1 DEX - BEQ .3 - CMP OBJLIST-1,X - BNE .1 - LDA #0 - STA OBJLIST-1,X - STX TEMP -* MOVE LAST OBJ INTO EMPTY SPACE - LDX #21 -.2 DEX - CPX TEMP - BCC .3 LAST OBJ WAS ZEROED - LDA OBJLIST-1,X SEARCH FOR LAST OBJ - BEQ .2 - PHA - LDA #0 - STA OBJLIST-1,X REMOVE FROM END - PLA - LDX TEMP - STA OBJLIST-1,X & PUT IT IN PLACE OF REMOVED OBJ -.3 RTS -* VERB PART:GET NEW VERB#,DELETE VERB PART,JMP ATN -TPRT STX TEMP - LDA #$D0 BNE - JSR SKP2 POINT TO VERB PARTS - LDX TEMP -.1 JSR VDAT - TAY - BEQ BEJF PART NOT FOUND - CMP WVERB-1,X PART# - PHP - JSR VDAT NEW VERB# - PLP - BNE .1 - STA WVERB - STA PFND - TXA - TAY - DEX -.2 JSR TMOVE - INX - INY - CPY WORDS - BCC .2 - DEC WORDS - PLA - PLA - JMP ATN -PFND .BS 1 >0=PART FOUND -TPM LDA CASEFRAME+1 DEST ALLOWED WI THIS VERB? - AND #2 -BEJF BEQ JMPFAIL NO - LDA WNOUN-1,X - TAX - JSR CLCPNT REVERSE - STA SPM - RTS -T6.7 LDA #DEST - STA NTYPE - LDX NPSP - LDA #TLDEST - STA NPSTACK,X - INX - LDA /TLDEST - JMP TNP -TLDEST JSR COMBINE - LDA NOUNLIST+1 - BNE .4 >1 DEST - LDA NOUNLIST - BEQ .0 - STA SDEST - JSR CHECKLOC - BCC .1 -.0 JMP DNS -*.1 LDX WTFIN VERB -* CPX #VP -* BNE .2 -* CMP #LP+1 -* BCS NAP NOT A PLACE -.1 LDA #7 - JMP OUTOFNP -.4 JMP OD -T7.8 LDA CASEFRAME+1 INSTR ALLOWED? - AND #8 - BEQ JMPFAIL NO - JSR LOADNUM - STA SPI - STY SPI+1 -T7RTS RTS -*-------------------------------- -* JUMPED TO IF A JUMP TRANSITION'S REQUIREMENTS AREN'T MET -JMPFAIL PLA - PLA - LDX CURWORD - JMP A4 -*-------------------------------- -LOADNUM DEX - LDA WLO,X - LDY WHI,X - RTS -*-------------------------------- -* ON ENTERING NP: -* STORE ADDRESS OF LEAVE ROUTINE ON NPSTACK -* ZERO SPN -* INC WORDS -* ZERO ADJLIST -* ON EXITING: -* DEC WORDS -TNUM LDA SPN - BNE JMPFAIL NUM CAN'T BE USED FOR SOURCE OR DEST - LDA WLO-1,X - CMP #ALLNUM MAKE ALL=0 - BNE .1 - LDA WHI-1,X CONT CMP ALLNUM - BEQ .2 -.1 LDA WNOUN-1,X GET VALUE -.2 STA SNUM - RTS -TPRN LDA CNTOBJ - BNE TN2 - LDA LSTOBJ - BNE TN2 - PLA - PLA - LDY /.1 - LDA #.1 - JMP PS -.1 .US /I DON'T KNOW WHAT YOU MEAN BY "IT".@=/ -CNTOBJ .BS 1 CONTEXT OBJ -TADJ LDA WNOUN-1,X GET ADJ# - LDY #$FF -.1 INY - LDX ADJLIST,Y - BNE .1 - STA ADJLIST,Y -TARTS RTS -TNOUN LDA WNOUN-1,X -TN2 PHA - JSR COMBINE - STA UALL -.0 STA LNL,Y ERASE LNL - STA SOURCELIST,Y AND SOURCELIST - DEY - BPL .0 - PLA - STA TEMP3 -* SEE IF OBJ HAS SUBOBJS, I.E. "DOOR" CAN REFER TO MANY DOORS -* ENTER WI OBJ IN A -* ON EXIT, X=#SUBOBJS,WHICH ARE ON STACK -* NO MORE THAN 256 BYTES IN SUBTAB DATA - LDY #0 -.1 LDX SUBTAB,Y - BEQ TN1 NOT FOUND - CMP SUBTAB,Y - BNE .3 - LDX #0 -.2 INY - LDA SUBTAB,Y - BEQ TN1 END OF LIST - PHA - INX - BNE .2 ALWAYS -.3 INY - LDX SUBTAB,Y - BNE .3 FIND END OF THIS LIST - INY - BNE .1 ALWAYS -TN1 TXA - BNE .1 - LDA TEMP3 - JSR CHECKADJ - BCS TARTS ELIMINATED BY ADJ - STA SOURCELIST - CMP #ALL - BEQ .0 - JMP .3 -.0 DEC UALL FF FOR BIT - LDX #HOLDS - BIT CASEFRAME - BVC .12 OBJS IN LOC FORBIDDEN - LDA LIGHT - BEQ .12 USES OBJS IN ME IF NO LIGHT - LDA LOC - JSR GETOBJ NOTE THAT THIS DOESN'T INCLUDE LOC WITH OBJS IN LOC - JMP .1 -.12 LDA #ME OBJS IN ME - JSR GETOBJ -.1 LDY #0 - STY INLOC NO OBJS YET IN LOC - STY TEMP+3 SUB POINTER -.2 DEX - BMI .26 - PLA - JSR CHECKADJ - BCS .2 - JSR CHECKLOC WHEN DEALING WI SUBSETS,ONLY INCLUDE OBJS IN LOC - STY TEMP+2 - LDY TEMP+3 - STA LNL,Y SAVE IN CASE WE MUST RESTORE - INC TEMP+3 - LDY TEMP+2 - BCS .2 NOT LOC - INC INLOC 1 OBJ IN LOC -.23 JSR FF4A - LDA $45 - JSR PNTOBJ - LDY #5 - LDA (MISC),Y - PHP - JSR FF3F - PLP - BPL .25 - BIT UALL INVISIBLE^(0/FF) - BNE .2 DON'T INCLUDE INVISIBLE IN ALL -.25 STA SOURCELIST,Y - INY - BNE .2 ALWAYS -*IF NO OBJ IS IN LOC & ABS OBJS ALLOWED,RESTORE OBJS NOT IN LOC -.26 LDY TEMP+3 - LDA INLOC - BNE .28 AT LEAST 1 WAS IN LOC - BIT CASEFRAME - BPL .28 -.27 DEY - BMI .99 - LDA LNL,Y - STA SOURCELIST,Y - JMP .27 -.99 LDY TEMP+3 -.28 LDA #0 -.29 DEY - BMI .3 - STA LNL,Y CLEAR FOR SOURCES - BPL .29 -* NOUNS IN SOURCELIST, LAST IN NL, LNL EMPTY -.3 LDX SPN - BNE .6 PRECEDING PREP - LDY #19 1ST NOUN -.4 LDA SOURCELIST,Y MOVE SOURCELIST INTO NL & LNL - STA NOUNLIST,Y FOR POSSIBLE COMBINE AFTER PREP NOUN - STA LNL,Y - DEY - BPL .4 -.45 RTS -.6 CPX #NOTIN - BCS .8 SPECIAL PN - LDY #0 - STY TEMPIND - STY TEMPIND+1 -.65 LDY TEMPIND - LDA SOURCELIST,Y - BEQ .45 NONE LEFT - INC TEMPIND - LDX SPN - JSR GETOBJ A=OBJ,X=EDGE WE'RE LOOKING FOR - LDY TEMPIND+1 -.7 DEX - BMI .65 - PLA - STA LNL,Y - INY - INC TEMPIND+1 - BNE .7 ALWAYS -.8 -TNRTS RTS IMPLEMENT .8 LATER -TEMP3 .BS 3 -TEMPIND .BS 2 -UALL .BS 1 1=OBJ IS ALL -INLOC .BS 1 -TPN LDA WTYPE-1,X USED IN TNOUN TO SEE IF THIS PN CAN BE A PM -*THUS PM MUST BE 1ST TYPE - STA PTYPE - LDA WNOUN-1,X -TP2 JMP CLRADJ NEXT LINE STA SPN -PTYPE .BS 1 -TCONJ LDA NTYPE - CMP #INSTR - BNE .1 - PLA - PLA - JMP POI -.1 CMP #DEST - BNE .2 - PLA - PLA - JMP OD -.2 CMP #EXCE - BNE .3 - JSR EXCL - JMP .4 -.3 LDA #$FF - STA UCONJ MARK CONJ USED - STA JUCONJ JUST USED CONJ - JSR COMBINE - JSR CHECKOBJ - JSR NL.OL -.4 LDA #0 - BEQ TP2 -UCONJ .BS 1 1=CONJ USED -JUCONJ .BS 1 -TOBJ LDA #OBJ - STA NTYPE - LDX NPSP - LDA #TLOBJ - STA NPSTACK,X - INX - LDA /TLOBJ - JMP TNP -TLOBJ JSR CHECKOBJ - JSR NL.OL - JSR COMBINE - STA JUCONJ -* IF NOTHING LEFT AND A PN WAS GIVEN,LNL -> DEST IF ALLOWED - LDA NOUNLIST - BNE .9 - LDA SPN - BNE .2 IF THERE WERE NO PN,COULDN'T BE A DEST -.9 LDX TEMP3+1 - LDA #0 -.0 STA OBJLIST,X DELETE LAST NL.OL RESULTS - INX - CPX #20 - BNE .0 - JSR NL.OL - LDA OBJLIST - BEQ .24 RTS -.1 LDA #3 JMP TO NODE 3 - JMP OUTOFNP -.2 LDA CASEFRAME+1 SEE IF DEST ALLOWED - AND #2 - BEQ .23 NO - LDA SOURCELIST+1 - BNE OD MORE THAN 1 DEST - LDA OBJLIST - BNE .25 OBJLIST NOT EMPTY -.23 LDA OBJS WERE ALL OBJS ELIMINATED BEFORE COMBINE? -.24 BEQ CARTS YES,NO MORE MSG - LDY /NOBJ - LDA #NOBJ - JMP PS -.25 LDA SOURCELIST - BEQ .5 - JSR CHECKLOC - BCS .5 - LDX PTYPE SAVED BY TPN - CPX #PM - BNE .6 PN CAN'T BE PM - STA SDEST MAKE LAST SOURCE THE DEST - LDX SPN - JSR CLCPNT DEST POINTER IS OPPOSITE OF SOURCE POINTER - STA SPM - JMP .1 -.5 JMP DNS -.6 JMP SENTFAIL -OD LDY /ODEST >1 DEST - LDA #ODEST - JMP PS -TINSTR LDA #INSTR - STA NTYPE - LDX NPSP - LDA #TLINSTR - STA NPSTACK,X - INX - LDA /TLINSTR -TNP STA NPSTACK,X - INX - STX NPSP - LDX #39 - LDA #0 -.2 STA NOUNLIST,X CLEAR NL & LNL - DEX - BPL .2 - INC WORDS MAKE SURE ATN COMES OUT OF NP -CLRADJ STA SPN - LDA #0 - STA SNUM - LDX #7 -.1 STA ADJLIST,X ERASE OLD ADJS - DEX - BPL .1 -CARTS RTS -TLEAVENP PLA - PLA -TLNP2 LDX NPSP USED FROM ATN - DEX - LDA NPSTACK,X - STA .1+2 - DEX - LDA NPSTACK,X - STA .1+1 - STX NPSP - DEC WORDS MAKE UP FOR INC ON WAY IN -.1 JMP 0 JMP TO PROPER EXIT ROUTINE -NTYPE .BS 1 -TLINSTR JSR COMBINE - LDA NOUNLIST SHOULD BE 1 INSTR - BEQ PALI - STA SINSTR - LDY NOUNLIST+1 - BNE POI BUT ONLY ONE - JSR CHECKLOC - BCC .3 - LDA #.1 - LDY /.1 - BNE PPS -.1 .US /I DON'T SEE ANY+/ - .DA PRINS - .US / HERE!@=/ -.3 LDA #9 JMP TO NODE 9 -OUTOFNP LDX CURWORD - STA WORDNODE,X JUMPING TO NODE Z, SO RETURN TO Z RATHER THAN NODE JUST LEFT (F) - JSR GETNODE - JMP A8 -PALI LDA #PA2 - LDY /PA2 -PPS JMP PS -PA2 .DA #"$,PLSP - .US /AN INSTRUMENT.@=/ -POI LDA #.1 - LDY /.1 - BNE PPS -.1 .DA #"$,PLSP - .US /ONLY ONE INSTRUMENT.@=/ -ODEST .US /YOU CAN ONLY$/ - .DA SP - .US /ONE DESTINATION.@=/ -NOBJ .US /I SEE NO SUCH OBJECT.@=/ -SP .US / SPECIFY =/ -PLSP .US /PLEASE$/ - .DA SP,#"= =tsub -* -SAVETSUB16,S6,D1 -* TRANSITION SUBS -* SEE IF ADJS ELIMINATE ANY NOUNS -CHECKADJ STX TEMP3+2 - CLC IN CASE OF IMMEDIATE EXIT - LDX ADJLIST - BEQ .4 - STY TEMP3 - STA TEMP3+1 - LDX #ADJEC - JSR GETOBJ FIND ADJS - LDY #7 -.7 LDA ADJLIST,Y - BEQ .8 - ORA #$80 SET HIBIT TO MARK AS UNMATCHED - STA ADJLIST,Y -.8 DEY - BPL .7 -.0 DEX - BMI .3 - PLA - ORA #$80 - LDY #8 -.1 DEY - BMI .0 - CMP ADJLIST,Y - BNE .1 - AND #$7F MARK AS MATCHED - STA ADJLIST,Y - JMP .0 -.3 LDY #8 -.35 DEY - BMI .38 ALL ADJS DELETED, NONE ELIMINATED NOUN - LDA ADJLIST,Y NO ADJS SHOULD BE LEFT UNLESS NOT ATTACHED TO NOUN - BPL .35 MATCHED - SEC NOUN ELIMINATED - .HS 90 BCC -.38 CLC - LDY TEMP3 - LDA TEMP3+1 -.4 LDX TEMP3+2 - RTS -*ELIMINATE SUBSET OBJS NOT IN ROOM -*ENDLESS LOOP IF A IS IN B IS IN A -* USED BY TRANSIT & CNDACT -CHECKLOC STX TEMP3+1 - STY TEMP3 - PHA SAVE OBJ -.1 CMP ACLOC - BEQ .2 - LDX #IN - JSR GETOBJ - DEX - BMI .3 NOT IN LOC - PLA OBJ LAST OBJ IS IN - JMP .1 FIND OBJ THIS ONE IS IN -.2 STA ILOC LOC OBJ IS IN - CLC - .HS B0 BCS -.3 SEC NOT HERE,ELIM - PLA - LDX TEMP3+1 - LDY TEMP3 - RTS -ILOC .BS 1 -*------------------------------- -* NL -> OBJLIST -* WITHOUT ERASING OR DUPLICATING WHAT'S THERE -NL.OL LDY #0 - LDX #$FF -.1 INX - LDA OBJLIST,X SEARCH FOR 1ST OPEN BYTE - BNE .1 - STX TEMP3 INDEX TO NEXT FREE BYTE IN OBJLIST - STX TEMP3+1 IN CASE WE NEED TO DELETE NEW ADDITIONS -* BECAUSE A COMBINE IN TLOBJ ELIMINATES THEM -.2 LDA NOUNLIST,Y - BEQ .6 DONE - LDX TEMP3 - BEQ .4 NO OBJS IN OBJLIST YET - DEX -.3 CMP OBJLIST,X - BEQ .5 SKIP IF ALREADY IN OBJLIST - DEX - BPL .3 - LDX TEMP3 -.4 STA OBJLIST,X - INC TEMP3 -.5 INY - CPY #20 - BNE .2 -.6 RTS -*------------------------------- -* COMBINE NOUNLIST & LNL INTO NOUNLIST -* DELETING OBJS NOT IN BOTH -* USED TO ELIMINATE OBJS NOT IN SOURCE -* ON EXIT A=0 -COMBINE LDA #2 2 PASSES - STA PASS -.1 LDY #0 -.2 LDX LNL,Y - BNE .3 OBJECT FOUND -.25 INY SKIP BLANK - CPY #20 - BNE .2 - LDY #19 - LDA #0 - DEC PASS - BEQ CORTS -.26 STA NOUNLIST,Y ZERO NL TO MOVE LNL INTO IT - DEY - BPL .26 - BMI .1 -.3 LDA PASS - LSR LOW BIT -> C - TXA - BCS .5 2ND PASS - LDX #19 1ST PASS -.4 CMP NOUNLIST,X - BEQ .25 LEAVE IT ALONE CAUSE IT'S IN BOTH LISTS - DEX - BPL .4 - LDA #0 - STA LNL,Y DELETE - BEQ .25 ALWAYS -.5 LDX #$FF - PHA -.6 INX - LDA NOUNLIST,X - BNE .6 - PLA - STA NOUNLIST,X - BNE .25 ALWAYS -CORTS RTS -PASS .BS 1 -*-------------------------------- -* CHECK OBJS FOR LOC & NUM -* HAVE ALREADY BEEN CHECKED WI SOURCE -* ELIMINATE UNQUALIFIED WI MESSAGE -*SEE IF 0,1,OR MORE OBJS -CHECKOBJ TSX - STX STEMP - LDA NOUNLIST - BNE CH2 - LDA JUCONJ DON'T PRINT ERRMSG TILL LAST CHECK OF NOUNLIST - ORA OBJLIST OBJ LEFT FROM BEFORE CONJ? - BNE CORTS -PLADNS PLA - PLA -DNS LDY /DONSEE - LDA #DONSEE - BIT CASEFRAME - BVS .53 OBJS IN ROOM PRMITTED? - LDY /NOTCAR OBJS NOT IN ROOM,BUT SINCE VERB DOESN'T PERMIT - LDA #NOTCAR OBJS IN ROOM,PRINT NOTCAR -.53 JMP PS -CH2 LDA NOUNLIST+1 - ORA UCONJ 2 OBJS IF 2 IN NL OR ANOTHER TO COME AFT CONJ - STA TWOOBJ - JSR STNL - LDY #20 - LDA #0 -.05 STA LOCLIST-1,Y - DEY - BNE .05 -* FOR EACH OBJ,RECURSIVELY FIND OBJ WHICH IT'S IN -.10 STY NOTDONE -.15 STY TEMPIND - LDA (TEMP+2),Y - BEQ .25 - CMP ACLOC DOESN'T MATTER IF LOC I'M IN IS IN SOMETHING ELSE - BEQ .20 - CMP ACTOR STOP RECURSION AT ME,THO ME IS IN (LOC) - BNE .19 - LDA NOUNLIST,Y - CMP ACTOR IS IT ME? - BEQ .16 - LDA ACTOR NO,LOC IS ME - BNE .20 -.16 LDA ACLOC YES,LOC IS (LOC) - JMP .20 -.19 LDX #IN - JSR GETOBJ FIND WHAT CURRENT OBJ IS IN - LDY TEMPIND - DEX - BMI .22 OBJ ISN'T IN ANYTHING - PLA - INC NOTDONE FLAG:FOUND A PAPA OBJ -.20 STA LOCLIST,Y REP OBJ WITH OBJ IT'S IN -.22 INY - CPY #20 - BNE .15 -.25 LDA NOTDONE - BEQ CH30 - LDA #LOCLIST - STA TEMP+2 ALL SUBSEQUENT TIMES THRU,READ FROM LOCLIST INSTEAD - LDA /LOCLIST - STA TEMP+3 - LDY #0 - BEQ .10 -*ELIMINATE OBJS NOT IN ALLOWED LOCATIONS (ABSENT,LOC, OR ACTOR) -CH30 STY OBJS #OBJS - DEY HIGHEST INDEXED OBJ - STY TEMPIND - LDA CASEFRAME - BMI .60 ABSENT OBJS ALLOWED - LDA #9 - STA ERRMSG BLANK - LDA #0 -.35 LDX LOCLIST,Y - CPX ACLOC IN LOC? - BEQ .40 - CPX ACTOR IN ME? - BEQ .40 - JSR ELIM -.37 STA NOUNLIST,Y DELETE -.40 DEY - BPL .35 - LDA UALL - BEQ .60 - LDX OBJS - DEX - BNE .60 - LDA UCONJ - STA TWOOBJ CHANGE IF OBJS FROM ALL HAVE BEEN ELIMINATED -.60 BIT CASEFRAME - BVS .65 OBJS IN ROOM ALLOWED - LDA ACLOC - STA TEMPIND+1 SEE IF OBJS ARE IN (LOC) - LDA #1 NOTCAR - STA ERRMSG - JSR CLOC -.65 LDA CASEFRAME - AND #$20 - BNE .70 OBJS IN ME ALLOWED - LDA ACTOR - STA TEMPIND+1 SEE IF OBJS ARE IN ACTOR - LDA #0 CARR - STA ERRMSG - JSR CLOC -.70 JSR COMP - LDY SNUM - BEQ CHL - CPY #21 MAX+1 - BCC .83 -.95 LDY /NSM - LDA #NSM - JMP PS -.83 DEY INDEX STARTS AT 0 - JSR STNL - LDA (TEMP+2),Y - BEQ .95 ?"I DON'T SEE THAT MANY" & CONT - LDA #0 -.85 INY - CPY #20 - BCS CHL - STA (TEMP+2),Y - BCC .85 ALWAYS:FILLS IN REST OF NOUNLIST WI 00s - LDY #0 -CHL LDA NOUNLIST,Y - BEQ COMP - JSR CHPROP - INY - CPY #20 - BNE CHL -*COMPRESS NOUNLIST:REMOVE 0'S -COMP LDY #0 - LDX #0 -.1 LDA NOUNLIST,Y - STA NOUNLIST,X - BEQ .2 IF BLANK,DON'T INX,THUS REMOVING BYTE - INX -.2 INY - CPY #20 - BNE .1 -.3 INX - STA NOUNLIST,X - CPX #19 - BNE .3 - RTS -* CHECK PROPERTIES OF 1 OBJ AGAINST VERB'S REQUIREMENTS -CHPROP STY TEMP+3 - STA TEMP+2 - JSR PNTOBJ - JSR RESVDAT RESET POINTER TO VERB DATA - LDA #2 - STA ERRMSG - LDA CASEFRAME - ASL - ASL - ASL - ASL BIT 4 -> C - BCC .10 NO LIST OF ALLOWED OBJS - PHA -.3 JSR VDAT - TAY - BEQ .64 CAME TO END OF LIST WIOUT FINDINT IT - CMP TEMP+2 - BNE .3 -.7 JSR VDAT - TAY - BNE .7 MOVE POINTER TO NEXT ITEM - PLA -.10 ASL - BCC .20 NO LIST OF FORBIDDEN OBJS - PHA -.13 JSR VDAT - CMP TEMP+2 - BEQ .64 FORBIDDEN OBJ - TAY - BNE .13 NOT EOL - PLA -.20 INC ERRMSG - ASL - BCS .30 HUMAN OBJ ALLOWED - PHA - LDY #5 PROP3 - LDA (MISC),Y - AND #8 - BNE .64 HUMAN,FORBIDDEN - PLA -.30 INC ERRMSG - ASL - BCS .40 ANIMATE OBJ ALLOWED - PHA - LDY #5 - LDA (MISC),Y - AND #$10 - BNE .64 ANIMATE,FORBIDDEN - PLA -.40 INC ERRMSG - ASL - BCS .50 INANIMATE OBJ ALLOWED - PHA - LDY #5 - LDA (MISC),Y - AND #$10 - BEQ .64 INANIMATE,FORBIDDEN - PLA -.50 INC ERRMSG - LDA CASEFRAME+1 - ASL - BCC .60 - PHA - JSR VDAT X - LDY #0 SIZE - CMP (MISC),Y - BCC .64 SIZE>X - PLA -.60 INC ERRMSG - ASL - BCC .70 - PHA - JSR VDAT Y - LDY #0 - CMP (MISC),Y - BCC .67 -.64 PLA A WAS SAVED -.65 JMP PELIM -.67 PLA -.70 ASL - BCC .80 - PHA - JSR TBIT - BNE .64 - PLA -.80 ASL - BCS .90 BURNT/BROKEN PERMITTED - LDA #8 - STA ERRMSG - LDY #5 - LDA (MISC),Y - AND #$60 - BNE .65 -.90 LDY TEMP+3 - RTS -* TEST BIT: ON EXIT Z=1 IFF ANY OF BITS ARE SET -TBIT LDY #2 - STY ERRMSG -.1 INY - JSR VDAT - TAX - BEQ .2 - AND (MISC),Y - BNE .4 OR:SUCCESS IF ANY OF BITS IS SET -.2 CPY #5 - BNE .1 - INY Z<=0:3 BYTES WIOUT MATCHED PROP. FAILURE IF 3 00s. - RTS -.3 INY - JSR VDAT ADVANCE VDAT -.4 CPY #5 - BNE .3 - RTS Z=1 -*GET VERB DATA -VDAT LDA $FFFF VERB DATA - INC VDAT+1 - BNE .1 - INC VDAT+2 -.1 RTS -STNL LDA #NOUNLIST - STA TEMP+2 - LDX /NOUNLIST - STX TEMP+3 - RTS -* DELETE OBJS IN FORBIDDEN LOCS -CLOC LDY TEMPIND - LDA #0 -.1 LDX LOCLIST,Y - CPX TEMPIND+1 FORBIDDEN LOC? - BNE .2 - JSR ELIM ? MESSAGE -.2 DEY - BPL .1 - RTS -NOTDONE .BS 1 1=STILL FINDING PAPA OBJECTS -TWOOBJ .BS 1 0=1 OBJ IN NL -OBJS .BS 1 #OBJS -DONSEE .US /I DON'T SEE ANY HERE.@=/ -NSM .US /YOU DON'T SEE THAT MANY.@=/ -STEMP .BS 1 TEMP STORAGE FOR STACK POINTER -* SKIP OBJ DATA -* 0-7F SKIP THAT MANY BYTES -* 80+ LIST -SKPOBJ LDA #$10 BPL -SKP2 STA .7 - JSR RESVDAT - LDY #18 19 BITS - LDA CASEFRAME+2 - STA TEMP+3 - LDA CASEFRAME+1 - STA TEMP+2 - LDA CASEFRAME -.1 ASL TEMP+3 - ROL TEMP+2 - ROL - BCC .2 - LDX SKPTAB,Y - BEQ .2 NO DATA - PHA - BMI .15 -.12 JSR VDAT - DEX - BNE .12 - JMP .17 -.15 JSR VDAT LIST - TAX - BNE .15 -.17 PLA -.2 DEY -.7 BPL .1 BNE POINTS VDAT AT VERB PARTS - RTS -SKPTAB .HS FFFFFF000000FF00030101000000FFFF000000 -* ELIMINATE A NOUN FROM NLIST -* IF MORE THAN 1 NOUN OR BEFORE CONJ,PRINT NAME OF NOUN BEFORE MESSAGE -* & GO BACK FOR MORE. ELSE PRINT & QUIT. -* ON ENTRY: Y POINTS TO OBJ IN NOUNLIST -* SAVES Y,SCRAMBLES A&X -PELIM LDY TEMP+3 CALLED FROM CHPROP -ELIM STY TEMP+3 - DEC OBJS 1 MORE GONE - LDA NMSG - BNE .17 - LDA TWOOBJ - BEQ .1 - LDA UALL - BEQ .12 - LDA OBJS - BNE .17 ONLY PRINT LAST REJECT IN CASE OF ALL - BEQ .1 -.12 LDA NOUNLIST,Y CAN'T LOAD FROM TEMP+2 SINCE CH30 CALLS ELIM - JSR OBJCOL -.1 LDX ERRMSG - CPX #9 - BNE .15 - JSR DNS - JMP .17 -.15 LDY MSGS+9,X - LDA MSGS,X - JSR PS -* WOULD SAVE BYTES HERE BY PRINTING CR, BUT NOTCAR IS USED BY ANOTHER -.17 LDA OBJS ANY LEFT? - ORA JUCONJ MORE COMING? - BNE .3 - LDX STEMP ONLY 1 OBJ & IT WAS BLOWN. BACK TO CALLER. - TXS -.3 LDY TEMP+3 MULT OBJS,RTS - LDA #0 - STA NOUNLIST,Y DELETE OBJ -ELRTS RTS -ERRMSG .BS 1 MSG# -NMSG .BS 1 0=PRINT MSG -* CHANGE MSGS+9 IF YOU CHANGE # MSGS -MSGS .DA #CAR,#NOTCAR,#.3,#.4,#.5,#.6,#.7,#.8,#IR - .DA /CAR,/NOTCAR,/.3,/.4,/.5,/.6,/.7,/.8,/IR -.3 .DA #"$,.10,#"+,.9 - .US /<.@=/ SKIPPED IF UALL -.4 .DA #"$,.10 - .US /A PERSON!@=/ -.5 .DA #"$,.10 - .US /AN ANIMAL!@=/ -.6 .DA #"$,.10 - .US /SOMETHING THAT'S NOT ALIVE!@=/ -.7 .DA #"$,.11 - .US /BIG!@=/ -.8 .DA #"$,.11 - .US /SMALL.@=/ -.9 LDA UALL - BEQ .20 - LDA #.12-1 FOR ALL,DON'T PRINT LAST OBJ - LDX /.12-1 - JMP SWPR -.20 LDX TEMP+3 - LDA NOUNLIST,X - STA $10 - RTS -.10 .US /YOU CAN'T +/ - .DA PRVERB,#" ,#"= -.11 .US /IT'S TOO =/ -.12 .US /ANYTHING HERE.@=/ -IR .US /YOU CAN'T. IT'S RUINED.@=/ -CAR .US /YOU'RE$/ - .DA CI,#"= -NOTCAR .US /YOU'RE NOT$/ - .DA CI,#"= -CI .US / CARRYING IT.@=/ -*-------------------------------- -CHKLST LDY #40 NL & LNL - LDA #0 -.1 STA NOUNLIST-1,Y - DEY - BNE .1 -.2 JSR VDAT - TAX - BEQ .3 EOL - STA LNL,Y PUT PERMITTED LIST IN LNL - INY - BNE .2 ALWAYS -.3 RTS -*CHECK SENT FOR REQRD PARTS -CHECKSENT LDA CASEFRAME+1 - LSR DEST REQD? - BCC .1 NO - LDY SDEST GIVEN? - BNE .1 YES - LDA #74 GIVE DEST! - JMP PMSG -.1 AND #2 (4 BEFORE LSR) INSTR REQD? - ORA SINSTR GIVEN? - BNE .8 YES - JMP CDEST -.8 JSR CHKLST - LDA SINSTR - BEQ .40 -* CHECK INSTR - STA NOUNLIST - STA $10 - JSR COMBINE - LDA NOUNLIST - BNE .32 - LDY /.30 - LDA #.30 - JMP PS -.32 JSR CINME - BEQ .55 IN ME - LDA SINSTR - JSR PNTOBJ INEFFICIENT - LDY #3 - LDA (MISC),Y - AND #$20 - BNE .55 CAN'T CARRY LIQUID - LDA SINSTR - LDX #PARTOF - JSR GETOBJ - PLA - DEX - BPL .55 CAN USE INSTR WHICH IS PART WIOUT CARRYING IT -* IE HANDS,HOSE,TEETH -* USED TO PICK UP INSTRUMENT. BUT THIS CAUSED PROBLEMS WITH -* RESTRICTIONS (IE OWNERSHIP). - PHA - LDA #131 YOU DON'T HAVE > - JMP PMSG -* INSTR REQD, NOT GIVEN -* PUT OBJS IN ME IN NL & INSTRLIST IN LNL, THEN COMBINE -.40 LDA #ME - LDX #HOLDS - JSR GETOBJ -.45 DEX - BMI .50 - PLA - STA NOUNLIST,X - BNE .45 ALWAYS -.50 JSR COMBINE - LDA NOUNLIST+1 - BEQ .51 -.60 LDA #73 WITH WHAT? - JMP PMSG -.51 LDA NOUNLIST - BEQ .60 - STA SINSTR - LDY /.70 - LDA #.70 -.54 JSR PRINT -.55 LDA SINSTR - JSR PNTOBJ - LDY #5 - LDA (MISC),Y - AND #$60 BURNT OR BROKEN? -.58 BEQ CDEST - LDA #IR - LDY /IR - JMP PS -.30 .US /YOU CAN'T +/ - .DA PRVERB - .US / WITH <!@=/ -.70 .US /(WITH+/ - .DA PRINS,#"),#"@,#"= -PRINS LDA SINSTR -PIT PHA - STY $24 - LDA #$A0 - JSR FDF0 SPACE LEFT OUT OF STRING SO A COULD BE IN ANYTHING - LDA $1A - STA $50 - LDA $1B - STA $51 - PLA - JSR PROBJ - LDA $50 - LDX $51 -SWPR STA $1A - STX $1B - RTS -CDEST LDA CASEFRAME+2 - BPL .10 NO DESTLIST - JSR CHKLST ADVANCE VDAT - LDA SDEST - BEQ .10 NO DEST - STA NOUNLIST - JSR COMBINE - LDA NOUNLIST DEST IN DESTLIST? - BNE .10 Y - LDA #108 USE A DIFFERENT DEST -.8 JMP PMSG -.10 LDA CASEFRAME+2 - ASL - BPL .20 NO PREPLIST - JSR CHKLST - LDA SPM - BEQ .20 NO PREP (UNLIKELY) - STA NOUNLIST - JSR COMBINE - LDA #109 TRY A DIF PREP - LDX NOUNLIST PREP IN PREPLIST? - BEQ .8 N -.20 LDA CASEFRAME+2 - AND #$10 - BEQ HANDLER VERB PART N/R - LDA #113 THAT VERB NEEDS TWO PARTS - LDX PFND - BEQ .8 -* FALL THRU TO HANDLER =verbs -* -SAVEVERBS33.1,S6,D2 -TATT .DA FBULB,CAMERA,TO,#FBULB,#ON,#CAMERA -TBRE .DA #71,#$80,0,#BAR,#GUN,#HANDS,#HOSE,TEETH,#OBJIS,#BULB1,#$80,#OBJIS,#BULB2,#AMSG,#147,#SKIP,#$80,#JSR+$40,.1,#AMSG,#94,#SKIP,#$80,#NULL,#AZBIT,#VOBJ,#$FF,$FFBF,#0,#VOBJ,#ADJEC,#BROKEN,0,#$40 -.1 LDA SINSTR - STA $10 - JSR PNTOBJ - LDY #0 SIZE - LDA (MISC),Y - PHA - LDA CUROBJ - JSR PNTOBJ - LDY #0 SIZE - PLA - LSR DIV BY 2 - CMP (MISC),Y - TYA Z=1 - BCS .2 INSTRSIZE/2>=OBJSIZE - DEY -.2 RTS -TBRU .DA #TEETH,CAV,TBRUSH,#ZERO,CAVFORM,#0,#ZERO,CAVFORM+1,#AMSG,#19,#ELSE,#POKE,CAVFORM+1,/18*60,#UPSCR,#2,#AMSG,20 -TBUR .DA #$40,0,TC,#VOBJ,#ADJEC,#BURNT,0,#$20 WAS MATCHES -TCHEC .DA #BOOK1,#BOOK2,#BOOK3,BOOK4,#OUT,CHEOUT -TCHEOUT .DA #BOOK1,#BOOK2,#BOOK3,BOOK4,#BITSET,VOBJ,$40,#AMSG,#79,#SKIP,#$80,#LOCIS+$40,#LIBR1,#AMSG,#95,#SKIP,#$80,#PEEK,BCNT,#2,#AMSG,#80,#SKIP,#ELSE,#AINC,BCNT,#$80,#OBJIS,#BOOK2,#AMSG,81,#0,$40 -TCHEW .DA #$10,0,#PRIMED,#AMSG,#6,#$80,#NULL,#AMSG,22 -TCLE .DA #CLOTH,#HANDS,ME,#71,#SOAP1,#SOAP2,#WATER,#WATER+1,#WATER+2,#WATER+3,WATER+4,#VOBJ,#ADJEC,#CLEAN -TCLI .DA #IN,ON,#SLOTIS,#VDEST,#SHELF,#UPSCR,3,#VACT,#IN,#VDEST -TCLOS .DA #4,0,OC,$DFFF,#$FF -TCLOT .DA CLOTH,#OBJIS,#ME,#DO,#ME,#WEA,#VINSTR,0,0,#ELSE,#AMSG,76 -TCOM .DA COMB,#OBJIS,#VACT,#AMSG,#36,#ELSE,#AMSG,76 -TCUT .DA ID,TC,#VOBJ,#ADJEC,#BROKEN,0,#$40 LEFTOVER -TD .DA HD -TDAM .DA ME,#NULL,#AMSG,#250,#AINC,.2,#$80,#PEEK,.2,#3,#AINC,GAMOVR,#AJSR,.5,#0 -.2 .BS 1 # OF CUSSES (NOT SAVED) -* SCARE FOUL-MOUTHED PLAYER -.5 LDY #0 - STY .2 - STY BUF - STY MISC - STY CMND SEEK - STY SECT - LDA #2 - STA BUF+1 -.7 LDA .10,Y - STA TRACK - JSR RWTS - INC MISC - LDY MISC - CPY #6 - BCC .7 - RTS -.10 .DA #0,#15,#30,#10,#11,#12 -TDEB .DA HDEB -TDEV .DA FILM,#NULL,#AMSG,23 -TDIE .DA #NULL,#AMSG,24 -TDRIB .DA BALL -TDRI .DA #$20,0,#BITSET,#VOBJ,#$10,0,#GOTO,TEA2 -TDR2 .DA #$80,#PRIMED,#AMSG,#6,#POKE,POISON,#7,#$80,#OBJIS+$40,#RUM,#GOTO,.2,#$80,ACTME,#ZERO+$40,AD,#AMSG,#2,#GOTO,SLP,#ELSE,#AMSG,#137,#POKE,FLACT,#VACT,#POKE,FL,#14,#AREP,#VACT,#ADJEC,#DRUNK,#AZBIT,#VACT,$FFFF,#$FE -.2 .DA #0,HSWA -TDRO .DA #NULL,#AREP,#VOBJ,#IN,#VLOC,#$80,#ZERO+$40,SDEST,#DO,#VACT,#PUT,#VOBJ,#VPM,#VDEST,0,#$80,#OBJIS,#BALL,#ASBIT,#BALL,0,1 -TDRY .DA #WATER,#WATER+1,#WATER+2,#WATER+3,WATER+4,#90,TOWEL,#ISEDG+$40,#VOBJ,#ADJEC,#WET,#AMSG,25,#VOBJ,#ADJEC,#WET -TDUM .DA #MGET+1,#BITSET,#VOBJ,4,0,#BITSET+$40,VOBJ,$20,#AMSG,#1,#SKIP,#$80,#ISEDG+$40,#VOBJ,#HOLDS,#VX,#AMSG,#92,#SKIP -.1 .DA #$80,#BITSET,#VX,$20,#0,#POKE,$10,#VX,#AMSG,#105,#DELIT,#VX,#ELSE,#AREP,#VX,#IN,#VLOC,#$80,#ISEDG,#VX,#IN,#VOBJ,#SKIP,#ELSE,#UNBIND,#$80,#ISEDG,#VOBJ,#HOLDS,#VX,#GOTO,.1,#0 -TDUN .DA BALL,#14,#HOOP1,HOOP2,IN,#LOCIS,#GYM1,#$80,#LOCIS,#GYM2,#AMSG,#27,#ELSE,#AMSG,26 -TE .DA HE -* PRIMED=POISON -TEAT .DA #$10,0,#NULL,#NOTH -TEA2 .DA #$80,#PRIMED,#AMSG,#6,#POKE,POISON,#7,#$80,#OBJIS,#POWDER,#GOTO,.1,#$80,#OBJIS+$40,#FOOD2,#GOTO,.2,#$80,#PEEK,INP,#SALT,#AMSG,#144,#SKIP,#$80,#PEEK,INP,#SUGAR,#AMSG,#145,#ELSE -.1 .DA #POKE,TIRED,#7,#POKE,TIRED+1,#0,#AINC,AD -.2 .DA #0,HEAT -TELL .DA #NULL,#POKE,ELOP,$EA -TEND .DA GAME,#NULL,#AINC,GAMOVR,#0 -TERA .DA ARR,#NULL,#DELIT,ARR -TEXA .DA #BITSET,VOBJ,$800,#DO,#VOBJ,IV,0,0,#$80,#OBJIS,#FBULB,#AJSR,.1,#$80,#OBJIS,PAN1,#BITSET,#PAN1,0,#$80,#AMSG,#28,#$80,#OBJIS,TC,#BITSET,TC,$20,#AMSG,218,HEXA -.1 LDA #FBULB - JSR PNTOBJ - LDY #4 - LDA (MISC),Y - AND #7 - STA $50 - LDA #0 - STA $51 - RTS MSG PRINTED BY HEXA -TEXI .DA HEXI -TEXT .DA #WATER,#WATER+1,#WATER+2,#WATER+3,WATER+4,#BITSET,#VOBJ,0,#$20,#AMSG,#19,#ELSE,#AMSG,33 -* JSR GTIME 2* AS OFTEN -TFAS .DA .1 -.1 ASL TR TR=TR*2 - BNE .2 - ROR TR DON'T SHIFT 1 BIT OUT & GET 0 -.2 RTS -TFIL .DA #0,8,#WATER,#WATER+1,#WATER+2,#WATER+3,WATER+4,#VINSTR,#IN,#VOBJ -* CAN'T USE BIT REP SINCE ME MUST THEN PICK LIQUID UP -TFIN .DA #INME,#VOBJ,#AMSG,#124,#SKIP,#$80,#INROOM,#VOBJ,#AMSG,#125,#ELSE,#AMSG,126 -TFLU .DA #TOILET1,TOILET2,#NULL,#AMSG,#110 -.1 .DA #UNBIND,#$80,#ISEDG,#VOBJ,#HOLDS,#VX,#DELIT,#VX,#GOTO,.1,#0,#$FF,$FFBF -TFOL .DA #ACTME,#AMSG,#185,#SKIP,#$80,#OBJIS+$40,#ME,#$80,#SLOTIS,#VACT,#LIB,#$80,#SLOTIS,#VACT,#MARK,#POKE,$10,#VACT,#AMSG,#154,#SKIP - .DA #$80,#ZERO+$40,SCRIM,#GOTO,.5,#$80,#SLOTIS,#VACT,#PROF,#$80,#SLOTIS,#VACT,#PRIS1,#AMSG,#188,#ELSE -.5 .DA #POKE,SFL,#2,#SPAWN,#VACT,#PFOL,VOBJ -MGET .EQ 22 -TGET .DA #MGET,#OFF,REM,#OBJWASIN,#VACT,#AMSG,#124,#$80,#ACTME+$40,#ADEL,#VACT,#OWNS,#VOBJ,#AMAK,#VACT,#OWNS,#VOBJ,#$80,#ISEDG,#VACT,#ON,#VOBJ,#AMSG,#35,#AREP,#VOBJ,#IN,#VLOC,SKIP,$FFFF,#$FE ASSUMES OBJ YOU'RE SITTING IN WAS IN ROOM -* SIMULATES REJECTION FOR CARRYING OBJ -* SEPARATE HANDLING BECAUSE YOU CAN GET AN OBJ IN AN OBJ IN ME -TGIV .DA #MGET,TO,#VACT,#OWNS,#VOBJ,#VOBJ,#IN,#VDEST -TGO .DA #71,IN,HGO,#VACT,#IN,#VDEST -THEA .DA #OBJIS,#TAPE1,#$80,#OBJIS,#TAPE2,#GOTO,.1,#0,.2 -.1 .DA #$80,#OBJIN+$40,#RECOR,#AMSG,#63,#SKIP,#$80,#BITSET+$40,#VOBJ,#0,$40,#AMSG,#37,#SKIP,#ELSE,#AZBIT,#VOBJ,#$FF,$FFBF,#$80,#OBJIS,#TAPE1,#AMSG,#38,#$80,#OBJIS,#TAPE2,#UPSCR,#7,#AMSG,39,TRTS -.3 .US /I'LL TELL YOU IF IT SAYS ANYTHING.@=/ -.2 LDY /.3 - LDA #.3 -PSNOK JSR PS - JMP NOK -THEL .DA ME,#POWDER,TAPE2,.1 -.1 LDA SCORE - BNE .3 - LDA #.2 - LDY /.2 - BNE PSNOK -.2 .US /TALK TO %MARK. HE WANTS TO HELP YOU.@=/ -.3 LDA HOUR - CMP #9+12 - BNE .5 - LDA #.4 - LDY /.4 - JSR PS -.5 LDA DAY - CMP #21 - BEQ .6 - LDA KSC+4 PUSHED PANEL? - BNE .6 YES - LDA #.7 - LDY /.7 - JSR PS -.6 JSR INLINE - .DA TRTS,#SLOTIS,#VINSTR,#POWDER,#AMSG,#173,#$80,#SLOTIS,#VINSTR,#TAPE2,#AMSG,#63,#$80,#LOCIS,#SHELF,#AMSG,#174,#$80,#LOCIS,#CRAWL1,#AMSG,#175,#$80,#LOCIS,#BATH1,#$80,#LOCIS,#BATH2,#AMSG,#181,#SKIP - .DA #$80,#INME,BOARD,#ISEDG,#MAG,#PARTOF,#BOARD,#AMSG,#219,#$80,#LOCIS,STAIR4,#ISEDG+$40,#MAG,#ON,#TC,#AMSG,#217,#$80,#LOCIS,#OPER,#AMSG,#182,#$80,#LOCIS,#RECR,#AMSG,#210,#$80,#LOCIS,MACH,#ZERO+$40,SCREAM,#AMSG,#176 - .DA #$80,#LOCIS,OFFI,#ZERO+$40,KSC+6,#AMSG,#177,#$80,#LOCIS+$40,#CELL,#AMSG,#180,#SKIP,#$80,#INROOM,#GUN,#AMSG,#178,#ELSE,#AMSG,179 -.4 .US /YOU'D BETTER GET TO BED.@=/ -.7 .US /YOU'D BEST START LOOKING HIGH AND LOW FOR A WAY OUT.@=/ -THIT .DA #BAR,#GUN,#HOSE,HANDS,#BITSET,#VOBJ,0,#$10,#DO,#VACT,#KIL,#VOBJ,0,VINSTR,#ELSE,#DO,#VACT,#BRE,#VOBJ,0,VINSTR,#0 -TI .DA HI -TJUM .DA #LOCIS,#STAIR1,#$80,#LOCIS,#STAIR2,#$80,#LOCIS,#STAIR4,#AMSG,#43,#AINC,GAMOVR,#ELSE,#AMSG,120 -TKIL .DA #BAR,#GUN,#HOSE,#HANDS -.1 .DA #0,#SLOTIS,#VINSTR,#GUN,#DO,#VACT,#SHOO,#VOBJ,0,VINSTR,#GOTO,.1,#$80,#OBJIS,#PRIS1,#$80,#OBJIS,#PRIS2,#$80,#OBJIS,#PRIS3,#$80,#OBJIS,#PROF,#DESTR,#VOBJ,#AMSG,#46,#SKIP - .DA #$80,#JSR,IMP,#AMSG,#204,#SKIP,#$80,#LOCIS+$40,#OFFI,#AMSG,#44,#GOTO,NABBED,#ELSE,#AMSG,#162 -SLP .DA #POKE,TIRED,#0,#POKE,TIRED+1,#0,#SPAWN,#ME,PDRM,#DO,#ME,SLE,0,0,#POKE,TREP,1 CLOCK CAN'T REACH 10 BEFORE DO IS EXECUTED - .DA HSWA SO TEA2 CAN GOTO SLP -NABBED .DA #$80,#ZERO+$40,SINSTR,#0,#SLOTIS+$40,#VINSTR,#HANDS,#AREP,#VINSTR,#IN,#GUARD,#$80,#LOCIS+$40,#OFFI,#MOVETO,#OFFI,#AREP,#MARK,#IN,OFFI -TLIG .DA #8,0,#BITSET,VOBJ,$20,#AMSG,#47,#SKIP,#$80,#ITIN+$40,#BATT1,FLASH,#ITIN+$40,#BATT2,#FLASH,#AMSG,#100,#SKIP,#$80,#ISEDG,#FLASH,#HOLDS,VX,#BITSET+$40,VX,$40,#AMSG,#101,SKIP,#VOBJ,#ADJEC,#LIT,#0,$40 -TLOA .DA GAME,HLOA -TLOC .DA #BOTT,#BOX,#CAMERA,#FAUC1,#FAUC2,#FAUC3,#FLASH,#TOILET1,TOILET2,#4,0,#KEY1,#KEY2,KEY3,#BITSET,#VOBJ,#0,$20,#AJSR,.1,#AZBIT,#VOBJ,$DFFF,#$FF,#$80,#ISEDG+$40,#VINSTR,#UNLOCKS,#VOBJ,#AMSG,#48,SKIP,$EFFF,#$FF -.1 LDA #12 (CLOSED) - JMP PADJ -TLOO .DA #IN,#ON,#UNDER,THRU,.1 -.1 JSR NOK -.12 LDA LIGHT - BNE .15 - JMP PLOC IT'S DARK! -.15 LDA WTFIN CAN'T DO THIS IN SPCACT SINCE PRLOC USES VDAT - CMP #VI - BNE .2 - JMP PRLOC -.2 LDX SPM - BNE .21 - LDA #61 HUH? (LOOK N) - JMP PMSG -.21 LDA SDEST - CMP LOC ONLY I LOOK - BEQ .25 CAN SEE IN LOC EVEN IF CLOSED (IE CLOSET) - CPX #IN - BNE .23 - PHA - JSR PNTOBJ - LDY #3 - LDA (MISC),Y - AND #4 OPENABLE? - BEQ .24 NO - INY - LDA (MISC),Y - BMI .24 TRANSPARENT - AND #$20 - BNE .24 OPEN - PLA - JMP IC -.24 PLA -.23 PHA - JSR FINDO - PLA - BCC .25 CAN REACH IT - RTS -.25 LDX SPM - CPX #THRU - BEQ .8 - PHA - JSR CLCPNT INVERT PREP - TAX - PLA - JSR GETOBJ - DEX - BPL .4 -.3 LDX SPM - CPX #IN - BNE .37 - LDA SDEST - CMP #TOILET1 - BEQ .34 - CMP #TOILET2 - BNE .37 -.34 JSR PNTOBJ - LDY #4 - LDA (MISC),Y - AND #$40 - BEQ .37 - LDA #111 IT'S BEEN USED. - .HS 2C BIT -.37 LDA #92 THERE'S NOTHING THERE - JMP PMSG -.4 LDA #0 - STA TEMP+2 - STX TEMP+1 PROBJ USES TEMP -.5 PLA - STA $10 - LDY SPM - CPY #IN - BNE .55 ONLY IN CAN'T DISPLAY INVISIBLE OBJS - JSR PNTOBJ - LDY #5 - LDA (MISC),Y - BMI .7 INVISIBLE -.55 CLC - LDA TEMP+2 0 OR 1 - BNE .6 - INC TEMP+2 -.6 ADC #29 YOU SEE A,AND A - JSR PADJ -.7 DEC TEMP+1 - BPL .5 - LDA TEMP+2 - BEQ .3 ALL INVISIBLE - JMP PR .<CR> -*8 CMP #WINDOW -* BNE .9 -.8 LDA #93 YOU CAN'T LOOK THRU THAT! (NOTHING IN INMATE) - JMP PMSG -TLOW .DA #NULL,#ADEC,LWC,#0 -TMOV .DA #MPUS,#ZERO+$40,SDEST,#0,#ZERO,OBJLIST+1,#DO,#VACT,#PUT,#VOBJ,#SPM,#SDEST,0,#$80,#ITIN,#VOBJ,#VX,#AREP,#VOBJ,#IN,#GYM1,#AREP,#VOBJ,#IN,#VX,#$80 - .DA #OBJIS,PAN1,#ZERO,SC,#UPSCR,#4,#AMSG,#49,#MAKVIS,#PAN1,#CHMAP,#SHELF,#UP,#CRAWL1,#AREP,#PAN1,#IN,#CRAWL1,#$80,#OBJIS,#BAR,#AINC,BARREM,#UPSCR,5 -TN .DA HN -TNOD .DA HNOD -TNOE .DA #NULL,#POKE,ELOP,$88 DEY -TOPE .DA #4,0,#KEY1,#KEY2,KEY3,#ZERO+$40,SINSTR,#0,#ISEDG,#VINSTR,#UNLOCKS,#VOBJ,#ASBIT,#VOBJ,#0,$10,#$80,#BITSET+$40,#VOBJ,#0,$10,#AMSG,#50,#SKIP - .DA #$80,#OBJIS,DOOR1,#ZERO,BARREM,#AMSG,#91,#SKIP,#$80,#OBJIS,#DOOR1,#UPSCR,#5,#$80,#OBJIS,#FLASH,#DO,#VACT,#UNLI,FLASH,0,#0 - .DA #$80,#OBJIS+$40,#TC,#GOTO,.0,#$80,#ISEDG,#MAG,#ON,#TC,#UPSCR,#18,#ELSE,#AMSG,#216,#POKE,MT,#3 -.0 .DA #0,.1,$2000,#0 -* OBJS WHICH CONNECT LOCS WHEN OPEN -.1 LDA #$FF OPEN - .HS 2C BIT -OC LDA #0 CLOSE - STA .7 -* CHECK TIME DOORS LEFT OPEN - LDY #3 - LDA CUROBJ -.12 DEY - BMI .18 -.15 CMP .8,Y - BNE .12 - TYA - ASL 2 BYTES/TIMER - TAY - LDA .7 - BEQ .16 CLOSE - LDA #30 -.16 STA DT,Y -.18 LDY #6 #"DOORS"-1 - LDA CUROBJ -.2 CMP .5,Y - BEQ .3 - DEY - BPL .2 - RTS -.3 TYA - ASL - ASL - TAY - LDA .6+3,Y - PHA - AND .7 0 IF CLOSING - TAX - LDA .6+2,Y DIR FOR NEXT CHM - PHA - LDA .6,Y - PHA - LDA .6+1,Y - TAY - PLA - PHA - JSR CHM - PLA - AND .7 - TAX - PLA - TAY - PLA - JMP CHM -.7 .BS 1 0=CLOSE,FF=OPEN -.8 .DA #DOOR3,#DOOR5,#DOOR6 -.5 .DA #CLOSET,#DOOR1,#DOOR2,#DOOR3,#DOOR5,#DOOR6,#DOOR7 DOOR4 CAN ONLY BE BROKEN -.6 .DA #CLOSET,#EAST,#WEST,#RECR,#STAIR1,#UP,#DOWN,#STAIR3,#HALL2,#WEST,#EAST,#HALL4,#HALL2,#SOUTH,#NORTH,#STAIR4,#CAFE,#NORTH,#SOUTH,#KITCH,#STAIR3,#NORTH,#SOUTH,#FR,#CELL,#SOUTH,#NORTH,#HALL12 -TPHO .DA CAMERA,#ISEDG+$40,#FBULB,#ON,#CAMERA,#$80,#BITSET,#FBULB,0,#$40,#AMSG,#89,#SKIP,#$80,#CZ,#FBULB,#AMSG,#90,#SKIP,#$80 - .DA #ZERO,LIGHT,#ASBIT,#FBULB,#8,$40,#AJSR,DISPLAY,#AZBIT,#FBULB,#$F7,$FFBF,#$80,#NULL,#DECC,#FBULB,#$80,#BITSET,#VOBJ,0,#$10,#AMSG,#128,#POKE,FLACT,#VOBJ,#POKE,FL,#5,#$80,#OBJIS,#MARK,#UPSCR,6 -TPIC .DA #UV,GET -TPLA .DA #TAPE1,#TAPE2,#BALL,PONG,#RECOR,#ED,MRS,RECOR,IN,#OBJIS,#TAPE1,#$80,#OBJIS,#TAPE2,#AJSR,NOK,#DO,#VACT,#HEA,#VOBJ,0,0 - .DA #$80,#OBJIS,BALL,#LOCIS+$40,GYM1,#LOCIS+$40,#GYM2,#AJSR,CVH,#$80,#OBJIS,#BALL,#AMSG,#51,#$80,#OBJIS,PONG,#ZERO+$40,SINSTR,#AMSG,52 -CVH LDY /.1 - LDA #.1 - JMP PSNOK -.1 .US /YOU CAN'T +/ - .DA PRVERB - .US / HERE!@=/ -TPOK .DA HANDS,#OBJIS+$40,#ME,#AJSR,.1,#0 -.1 LDY /.2 - LDA #.2 - JMP PS -.2 .DA #">,#" ,#"+,PRVERB - .US /S YOU BACK.@=/ -TPOU .DA $20,#0,#IN,ON,#ZERO,SDEST,#AMSG,#105,#DELIT,#VOBJ,#SKIP,#ELSE,#AREP,#VOBJ,#VPM,VDEST -TPRY .DA MAG,#COMB,#KEY1,SCREW,#OFF,#PRY,#OUT,PRY,#VOBJ,PARTOF,$FFFF,#$7F -MPUS .EQ 25 -TPUS .DA #MPUS,#OBJIS,#PAN1,#$80,#OBJIS,#RUG,#DO,#VACT,#MOV,#VOBJ,0,0,#$80,#OBJIS,#DBUT,#ASBIT,DOOR1,$10,#AMSG,#53,#$80,#OBJIS,#WBUT,#AJSR,.5,#$80,#BITSET,VOBJ,$40,#AMSG,76 -.5 LDA WB - EOR #$FF - STA WB - RTS -TPUT .DA #MPUS,#DV,#DRO,#OUT,UNLI,#SLOTIS+$40,#VDEST,VENT1,#SLOTIS+$40,#VDEST,#VENT2,#NOTH,#ELSE,#DO,#VACT,#PV,#VOBJ,#VPM,VDEST,0,#VOBJ,#VPM,#VDEST -TPV .DA #SLOTIS+$40,#VPM,#IN,#SKIP,#$80,#ISEDG,#VDEST,#PART,VX,#JSR+$40,.1,#AMSG,#104,#AREP,#VOBJ,#IN,#ME,#SKIP,#$80,#SLOTIS,#VDEST,#VENT2,#GOTO,.0 - .DA #$80,#OBJIS,#TOWEL,#$80,#ITIN,#TOWEL,#VENT2,#AREP,#VOBJ,#IN,#VENT2,#AMSG,#214,#UPSCR,#19,#ELSE,#AMSG,#103,#DELIT,#VOBJ,#AINC,GT -.0 .DA #0 -.1 LDA CUROBJ - JSR PNTOBJ - LDY #0 SIZE - LDA (MISC),Y - TAY - DEY -TPRTS RTS Z=1 IF SIZE=1 -TREA .DA #2,0,#JSR,.30,#SKIP,#$80,#OBJIS,#CLOCK,#AJSR,.1,#SKIP,#$80,#OBJIS,#WATCH,#AJSR,.0,#ELSE,#AJSR,.50,#$80,#OBJIS,ID,#INROOM,#PRIS1,#UPSCR,#10,#AMSG,#85,#ADEL,#PRIS1,#ADJEC,#OLD,#ASWI,#PRIS1,PROF -.30 JSR NOK - LDA LIGHT - BNE .40 - JSR PLOC IT'S DARK - LDA #0 SUCCEED (TO FAIL) -.40 RTS -.50 LDY #$FF -.55 INY - LDA .80,Y OBJ - BEQ TPRTS NO MSG FOR OBJ - CMP CUROBJ - BNE .55 - LDA .90,Y MSG# - BNE PMNOK ALWAYS -.80 .DA #BOOK1,#BOOK2,#BOOK3,#BOOK4,#DB,#FILE1,#FILE2,#FILE3,#FILE4,#GRAF,ID -.90 .DA #57,#58,#59,#60,#87,#164,#165,#166,#167,#252,#84 -.0 LDA WB - BNE PDAT -.1 LDA #27 - JSR PADJ THE - LDA CUROBJ - JSR POBJ - LDA #0 - STA $51 - LDA HOUR - BNE .2 - LDA #12 0=AFTER MIDNIGHT -.2 CMP #13 - BCC .3 - SBC #12 -.3 STA $50 - LDA #0 SAYS IT IS /: - JSR POBJ NO CAPS - LDA MINUTE - STA $50 - CMP #10 - BCS WP35 - LDA #"0 - JSR COUT - INC $24 -WP35 LDA #54 -PMNOK JSR PMSG - JMP NOK -PDAT LDA #0 - STA $51 - LDA MONTH - STA $50 - LDA #28 THE WATCH SAYS / - JSR PADJ - LDA DAY - STA $50 - BNE WP35 ALWAYS -TREC .DA #TAPE1,TAPE2,ON,#NULL,#AMSG,62 -TREM .DA #MGET,#ISEDG+$40,#VOBJ,#ON,VACT,#ITIN,#VOBJ,VX,#ITIN,#VX,#VY,#AREP,#VOBJ,#IN,#VY,SKIP,#VOBJ,#IN,#VACT -* NOTE REMOVE PUTS OBJS IN ROOM IN ME - THAT'S NOT A BUG, IT'S A FEATURE! -TRET .DA #BOOK1,#BOOK2,#BOOK3,BOOK4,#LOCIS+$40,#LIBR1,#AMSG,#95,#SKIP,#ELSE,#AMSG,#98,#$80,#BITSET,#VOBJ,#0,$40,#ADEC,BCNT,#$80,#OBJIS,#BOOK2,#DELIT,#BOOK2,#ELSE,#AREP,#VOBJ,#IN,SHELF,#$FF,$FFBF -TREW .DA #TAPE1,TAPE2,RECOR,#ISEDG+$40,#VOBJ,#IN,#RECOR,#AMSG,#63,SKIP,#0,$40 -TRIP .DA #FILE1,#FILE2,#FILE3,FILE4,#UV,RIP,#VOBJ,IN + END OF ARCHIVE
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads