home *** CD-ROM | disk | FTP | other *** search
/ Source Code 1992 March / Source_Code_CD-ROM_Walnut_Creek_March_1992.iso / usenet / compsrcs / apple2 / 74 < prev    next >
Encoding:
Internet Message Format  |  1991-06-01  |  42.8 KB

  1. From: jac@yoko.rutgers.edu (Jonathan A. Chandross)
  2. Newsgroups: comp.sources.apple2
  3. Subject: v001SRC054:  Inmate Parser -- ATN Based, Part04/05
  4. Message-ID: <May.31.22.44.10.1991.11016@yoko.rutgers.edu>
  5. Date: 1 Jun 91 02:44:10 GMT
  6. Approved: jac@paul.rutgers.edu
  7.  
  8.  
  9. Submitted-by: Phil Goetz (goetz@cs.buffalo.EDU)
  10. Posting-number: Volume 1, Source:54
  11. Archive-name: util/parser/inmate/part04
  12. Architecture: ANY_2
  13. Version-number: 1.00
  14.  
  15.  
  16. =transit
  17. -*
  18. -SAVETRANSIT28
  19. -OBJ    .EQ 1
  20. -DEST   .EQ 2
  21. -INSTR  .EQ 3
  22. -EXCE   .EQ 4
  23. -* TRANSITION ACTIONS
  24. -* CAN USE SUB FOR MULT IF OBJS ALSO HAVE 6 BYTES
  25. -TV     LDY #0
  26. -       STY MISC+1
  27. -       STY TEMP+1
  28. -       LDA WVERB    MISC,+1=WVERB*6
  29. -       STA TEMP
  30. -       ASL
  31. -       BCC .0
  32. -       INC TEMP+1
  33. -.0     STA TEMP
  34. -       ROL MISC+1
  35. -       ASL
  36. -       ROL MISC+1
  37. -       ADC TEMP     C=0
  38. -       BCC .1
  39. -       INC MISC+1
  40. -       CLC
  41. -.1     ADC #VERBS
  42. -       STA MISC
  43. -       LDA /VERBS
  44. -       ADC MISC+1
  45. -       ADC TEMP+1
  46. -       STA MISC+1
  47. -.2     LDA (MISC),Y
  48. -       STA CASEFRAME,Y
  49. -       INY
  50. -       CPY #6
  51. -       BNE .2
  52. -RESVDAT LDY #1
  53. -.1     LDA CASEFRAME+4,Y
  54. -       STA VDAT+1,Y
  55. -       DEY
  56. -       BPL .1
  57. -TRTS   RTS
  58. -TPLACE LDA WNOUN-1,X  USED ONLY FOR NON-NOUN PLACES (NSEW..)
  59. -       STA SPLACE
  60. -       RTS
  61. -TPOBJ  LDX NPSP
  62. -       LDA #TLPOBJ
  63. -       STA NPSTACK,X
  64. -       INX
  65. -       LDA /TLPOBJ
  66. -       JMP TNP
  67. -TLPOBJ JSR COMBINE
  68. -       LDA NOUNLIST+1
  69. -       BNE .2       >1 PLACE
  70. -       LDA NOUNLIST
  71. -       BNE .1
  72. -       JMP DNS      0 PLACE
  73. -.1     CMP #LP+1
  74. -       BCS NAP      NOT A PLACE
  75. -       STA SDEST
  76. -       LDA #7
  77. -       JMP OUTOFNP
  78. -.4     .US /GIVE ONLY ONE PLACE.@=/
  79. -.2     LDY /.4
  80. -       LDA #.4
  81. -       JMP PS
  82. -NAP    LDY /.6
  83. -       LDA #.6
  84. -       BCS NAP-3    ALWAYS
  85. -.6     .US /THAT'S NOT A PLACE!@=/
  86. -* TADV, T9.10, T9.E UNUSED
  87. -TADV   LDA WNOUN-1,X
  88. -       STA SADV
  89. -       RTS
  90. -T9.10  JSR LOADNUM
  91. -       STA SPT
  92. -       STY SPT+1
  93. -       RTS
  94. -T9.E   JSR LOADNUM
  95. -       STA STIME
  96. -       STY STIME+1
  97. -       RTS
  98. -TEXC   LDA #EXCE
  99. -       STA NTYPE
  100. -       LDX NPSP
  101. -       LDA #TLEXC
  102. -       STA NPSTACK,X
  103. -       INX
  104. -       LDA /TLEXC
  105. -       JMP TNP
  106. -       RTS
  107. -TLEXC  JSR EXCL
  108. -       LDA #5
  109. -       JMP OUTOFNP
  110. -EXCL   LDY #0
  111. -.1     LDA NOUNLIST,Y
  112. -       BEQ .3       NO MORE
  113. -       JSR RFO
  114. -       INY
  115. -       CPY #20
  116. -       BNE .1
  117. -.3     RTS
  118. -* REMOVE A FROM OBJLIST
  119. -* FIND & ZERO IT IN OBJLIST
  120. -RFO    LDX #21
  121. -.1     DEX
  122. -       BEQ .3
  123. -       CMP OBJLIST-1,X
  124. -       BNE .1
  125. -       LDA #0
  126. -       STA OBJLIST-1,X
  127. -       STX TEMP
  128. -* MOVE LAST OBJ INTO EMPTY SPACE
  129. -       LDX #21
  130. -.2     DEX
  131. -       CPX TEMP
  132. -       BCC .3       LAST OBJ WAS ZEROED
  133. -       LDA OBJLIST-1,X   SEARCH FOR LAST OBJ
  134. -       BEQ .2
  135. -       PHA
  136. -       LDA #0
  137. -       STA OBJLIST-1,X   REMOVE FROM END
  138. -       PLA
  139. -       LDX TEMP
  140. -       STA OBJLIST-1,X   & PUT IT IN PLACE OF REMOVED OBJ
  141. -.3     RTS
  142. -* VERB PART:GET NEW VERB#,DELETE VERB PART,JMP ATN
  143. -TPRT   STX TEMP
  144. -       LDA #$D0     BNE
  145. -       JSR SKP2     POINT TO VERB PARTS
  146. -       LDX TEMP
  147. -.1     JSR VDAT
  148. -       TAY
  149. -       BEQ BEJF     PART NOT FOUND
  150. -       CMP WVERB-1,X     PART#
  151. -       PHP
  152. -       JSR VDAT     NEW VERB#
  153. -       PLP
  154. -       BNE .1
  155. -       STA WVERB
  156. -       STA PFND
  157. -       TXA
  158. -       TAY
  159. -       DEX
  160. -.2     JSR TMOVE
  161. -       INX
  162. -       INY
  163. -       CPY WORDS
  164. -       BCC .2
  165. -       DEC WORDS
  166. -       PLA
  167. -       PLA
  168. -       JMP ATN
  169. -PFND   .BS 1        >0=PART FOUND
  170. -TPM    LDA CASEFRAME+1  DEST ALLOWED WI THIS VERB?
  171. -       AND #2
  172. -BEJF   BEQ JMPFAIL  NO
  173. -       LDA WNOUN-1,X
  174. -       TAX
  175. -       JSR CLCPNT   REVERSE
  176. -       STA SPM
  177. -       RTS
  178. -T6.7   LDA #DEST
  179. -       STA NTYPE
  180. -       LDX NPSP
  181. -       LDA #TLDEST
  182. -       STA NPSTACK,X
  183. -       INX
  184. -       LDA /TLDEST
  185. -       JMP TNP
  186. -TLDEST JSR COMBINE
  187. -       LDA NOUNLIST+1
  188. -       BNE .4       >1 DEST
  189. -       LDA NOUNLIST
  190. -       BEQ .0
  191. -       STA SDEST
  192. -       JSR CHECKLOC
  193. -       BCC .1
  194. -.0     JMP DNS
  195. -*.1     LDX WTFIN    VERB
  196. -*      CPX #VP
  197. -*      BNE .2
  198. -*      CMP #LP+1
  199. -*      BCS NAP      NOT A PLACE
  200. -.1     LDA #7
  201. -       JMP OUTOFNP
  202. -.4     JMP OD
  203. -T7.8   LDA CASEFRAME+1  INSTR ALLOWED?
  204. -       AND #8
  205. -       BEQ JMPFAIL  NO
  206. -       JSR LOADNUM
  207. -       STA SPI
  208. -       STY SPI+1
  209. -T7RTS  RTS
  210. -*--------------------------------
  211. -* JUMPED TO IF A JUMP TRANSITION'S REQUIREMENTS AREN'T MET
  212. -JMPFAIL PLA
  213. -       PLA
  214. -       LDX CURWORD
  215. -       JMP A4
  216. -*--------------------------------
  217. -LOADNUM DEX
  218. -       LDA WLO,X
  219. -       LDY WHI,X
  220. -       RTS
  221. -*--------------------------------
  222. -* ON ENTERING NP:
  223. -*      STORE ADDRESS OF LEAVE ROUTINE ON NPSTACK
  224. -*      ZERO SPN
  225. -*      INC WORDS
  226. -*      ZERO ADJLIST
  227. -* ON EXITING:
  228. -*      DEC WORDS
  229. -TNUM   LDA SPN
  230. -       BNE JMPFAIL  NUM CAN'T BE USED FOR SOURCE OR DEST
  231. -       LDA WLO-1,X
  232. -       CMP #ALLNUM  MAKE ALL=0
  233. -       BNE .1
  234. -       LDA WHI-1,X  CONT CMP ALLNUM
  235. -       BEQ .2
  236. -.1     LDA WNOUN-1,X  GET VALUE
  237. -.2     STA SNUM
  238. -       RTS
  239. -TPRN   LDA CNTOBJ
  240. -       BNE TN2
  241. -       LDA LSTOBJ
  242. -       BNE TN2
  243. -       PLA
  244. -       PLA
  245. -       LDY /.1
  246. -       LDA #.1
  247. -       JMP PS
  248. -.1     .US /I DON'T KNOW WHAT YOU MEAN BY "IT".@=/
  249. -CNTOBJ .BS 1        CONTEXT OBJ
  250. -TADJ   LDA WNOUN-1,X  GET ADJ#
  251. -       LDY #$FF
  252. -.1     INY
  253. -       LDX ADJLIST,Y
  254. -       BNE .1
  255. -       STA ADJLIST,Y
  256. -TARTS  RTS
  257. -TNOUN  LDA WNOUN-1,X
  258. -TN2    PHA
  259. -       JSR COMBINE
  260. -       STA UALL
  261. -.0     STA LNL,Y    ERASE LNL
  262. -       STA SOURCELIST,Y  AND SOURCELIST
  263. -       DEY
  264. -       BPL .0
  265. -       PLA
  266. -       STA TEMP3
  267. -* SEE IF OBJ HAS SUBOBJS, I.E. "DOOR" CAN REFER TO MANY DOORS
  268. -* ENTER WI OBJ IN A
  269. -* ON EXIT, X=#SUBOBJS,WHICH ARE ON STACK
  270. -* NO MORE THAN 256 BYTES IN SUBTAB DATA
  271. -       LDY #0
  272. -.1     LDX SUBTAB,Y
  273. -       BEQ TN1      NOT FOUND
  274. -       CMP SUBTAB,Y
  275. -       BNE .3
  276. -       LDX #0
  277. -.2     INY
  278. -       LDA SUBTAB,Y
  279. -       BEQ TN1      END OF LIST
  280. -       PHA
  281. -       INX
  282. -       BNE .2       ALWAYS
  283. -.3     INY
  284. -       LDX SUBTAB,Y
  285. -       BNE .3       FIND END OF THIS LIST
  286. -       INY
  287. -       BNE .1       ALWAYS
  288. -TN1    TXA
  289. -       BNE .1
  290. -       LDA TEMP3
  291. -       JSR CHECKADJ
  292. -       BCS TARTS    ELIMINATED BY ADJ
  293. -       STA SOURCELIST
  294. -       CMP #ALL
  295. -       BEQ .0
  296. -       JMP .3
  297. -.0     DEC UALL     FF FOR BIT
  298. -       LDX #HOLDS
  299. -       BIT CASEFRAME
  300. -       BVC .12      OBJS IN LOC FORBIDDEN
  301. -       LDA LIGHT
  302. -       BEQ .12      USES OBJS IN ME IF NO LIGHT
  303. -       LDA LOC
  304. -       JSR GETOBJ   NOTE THAT THIS DOESN'T INCLUDE LOC WITH OBJS IN LOC
  305. -       JMP .1
  306. -.12    LDA #ME      OBJS IN ME
  307. -       JSR GETOBJ
  308. -.1     LDY #0
  309. -       STY INLOC    NO OBJS YET IN LOC
  310. -       STY TEMP+3   SUB POINTER
  311. -.2     DEX
  312. -       BMI .26
  313. -       PLA
  314. -       JSR CHECKADJ
  315. -       BCS .2
  316. -       JSR CHECKLOC WHEN DEALING WI SUBSETS,ONLY INCLUDE OBJS IN LOC
  317. -       STY TEMP+2
  318. -       LDY TEMP+3
  319. -       STA LNL,Y    SAVE IN CASE WE MUST RESTORE
  320. -       INC TEMP+3
  321. -       LDY TEMP+2
  322. -       BCS .2       NOT LOC
  323. -       INC INLOC    1 OBJ IN LOC
  324. -.23    JSR FF4A
  325. -       LDA $45
  326. -       JSR PNTOBJ
  327. -       LDY #5
  328. -       LDA (MISC),Y
  329. -       PHP
  330. -       JSR FF3F
  331. -       PLP
  332. -       BPL .25
  333. -       BIT UALL     INVISIBLE^(0/FF)
  334. -       BNE .2       DON'T INCLUDE INVISIBLE IN ALL
  335. -.25    STA SOURCELIST,Y
  336. -       INY
  337. -       BNE .2       ALWAYS
  338. -*IF NO OBJ IS IN LOC & ABS OBJS ALLOWED,RESTORE OBJS NOT IN LOC
  339. -.26    LDY TEMP+3
  340. -       LDA INLOC
  341. -       BNE .28      AT LEAST 1 WAS IN LOC
  342. -       BIT CASEFRAME
  343. -       BPL .28
  344. -.27    DEY
  345. -       BMI .99
  346. -       LDA LNL,Y
  347. -       STA SOURCELIST,Y
  348. -       JMP .27
  349. -.99    LDY TEMP+3
  350. -.28    LDA #0
  351. -.29    DEY
  352. -       BMI .3
  353. -       STA LNL,Y    CLEAR FOR SOURCES
  354. -       BPL .29
  355. -* NOUNS IN SOURCELIST, LAST IN NL, LNL EMPTY
  356. -.3     LDX SPN
  357. -       BNE .6       PRECEDING PREP
  358. -       LDY #19      1ST NOUN
  359. -.4     LDA SOURCELIST,Y  MOVE SOURCELIST INTO NL & LNL
  360. -       STA NOUNLIST,Y    FOR POSSIBLE COMBINE AFTER PREP NOUN
  361. -       STA LNL,Y
  362. -       DEY
  363. -       BPL .4
  364. -.45    RTS
  365. -.6     CPX #NOTIN
  366. -       BCS .8       SPECIAL PN
  367. -       LDY #0
  368. -       STY TEMPIND
  369. -       STY TEMPIND+1
  370. -.65    LDY TEMPIND
  371. -       LDA SOURCELIST,Y
  372. -       BEQ .45      NONE LEFT
  373. -       INC TEMPIND
  374. -       LDX SPN
  375. -       JSR GETOBJ   A=OBJ,X=EDGE WE'RE LOOKING FOR
  376. -       LDY TEMPIND+1
  377. -.7     DEX
  378. -       BMI .65
  379. -       PLA
  380. -       STA LNL,Y
  381. -       INY
  382. -       INC TEMPIND+1
  383. -       BNE .7       ALWAYS
  384. -.8
  385. -TNRTS  RTS          IMPLEMENT .8 LATER
  386. -TEMP3  .BS 3
  387. -TEMPIND .BS 2
  388. -UALL   .BS 1        1=OBJ IS ALL
  389. -INLOC  .BS 1
  390. -TPN    LDA WTYPE-1,X  USED IN TNOUN TO SEE IF THIS PN CAN BE A PM
  391. -*THUS PM MUST BE 1ST TYPE
  392. -       STA PTYPE
  393. -       LDA WNOUN-1,X
  394. -TP2    JMP CLRADJ   NEXT LINE STA SPN
  395. -PTYPE  .BS 1
  396. -TCONJ  LDA NTYPE
  397. -       CMP #INSTR
  398. -       BNE .1
  399. -       PLA
  400. -       PLA
  401. -       JMP POI
  402. -.1     CMP #DEST
  403. -       BNE .2
  404. -       PLA
  405. -       PLA
  406. -       JMP OD
  407. -.2     CMP #EXCE
  408. -       BNE .3
  409. -       JSR EXCL
  410. -       JMP .4
  411. -.3     LDA #$FF
  412. -       STA UCONJ    MARK CONJ USED
  413. -       STA JUCONJ   JUST USED CONJ
  414. -       JSR COMBINE
  415. -       JSR CHECKOBJ
  416. -       JSR NL.OL
  417. -.4     LDA #0
  418. -       BEQ TP2
  419. -UCONJ  .BS 1        1=CONJ USED
  420. -JUCONJ .BS 1
  421. -TOBJ   LDA #OBJ
  422. -       STA NTYPE
  423. -       LDX NPSP
  424. -       LDA #TLOBJ
  425. -       STA NPSTACK,X
  426. -       INX
  427. -       LDA /TLOBJ
  428. -       JMP TNP
  429. -TLOBJ  JSR CHECKOBJ
  430. -       JSR NL.OL
  431. -       JSR COMBINE
  432. -       STA JUCONJ
  433. -* IF NOTHING LEFT AND A PN WAS GIVEN,LNL -> DEST IF ALLOWED
  434. -       LDA NOUNLIST
  435. -       BNE .9
  436. -       LDA SPN
  437. -       BNE .2       IF THERE WERE NO PN,COULDN'T BE A DEST
  438. -.9     LDX TEMP3+1
  439. -       LDA #0
  440. -.0     STA OBJLIST,X  DELETE LAST NL.OL RESULTS
  441. -       INX
  442. -       CPX #20
  443. -       BNE .0
  444. -       JSR NL.OL
  445. -       LDA OBJLIST
  446. -       BEQ .24      RTS
  447. -.1     LDA #3       JMP TO NODE 3
  448. -       JMP OUTOFNP
  449. -.2     LDA CASEFRAME+1  SEE IF DEST ALLOWED
  450. -       AND #2
  451. -       BEQ .23      NO
  452. -       LDA SOURCELIST+1
  453. -       BNE OD       MORE THAN 1 DEST
  454. -       LDA OBJLIST
  455. -       BNE .25      OBJLIST NOT EMPTY
  456. -.23    LDA OBJS     WERE ALL OBJS ELIMINATED BEFORE COMBINE?
  457. -.24    BEQ CARTS    YES,NO MORE MSG
  458. -       LDY /NOBJ
  459. -       LDA #NOBJ
  460. -       JMP PS
  461. -.25    LDA SOURCELIST
  462. -       BEQ .5
  463. -       JSR CHECKLOC
  464. -       BCS .5
  465. -       LDX PTYPE    SAVED BY TPN
  466. -       CPX #PM
  467. -       BNE .6       PN CAN'T BE PM
  468. -       STA SDEST    MAKE LAST SOURCE THE DEST
  469. -       LDX SPN
  470. -       JSR CLCPNT   DEST POINTER IS OPPOSITE OF SOURCE POINTER
  471. -       STA SPM
  472. -       JMP .1
  473. -.5     JMP DNS
  474. -.6     JMP SENTFAIL
  475. -OD     LDY /ODEST   >1 DEST
  476. -       LDA #ODEST
  477. -       JMP PS
  478. -TINSTR LDA #INSTR
  479. -       STA NTYPE
  480. -       LDX NPSP
  481. -       LDA #TLINSTR
  482. -       STA NPSTACK,X
  483. -       INX
  484. -       LDA /TLINSTR
  485. -TNP    STA NPSTACK,X
  486. -       INX
  487. -       STX NPSP
  488. -       LDX #39
  489. -       LDA #0
  490. -.2     STA NOUNLIST,X  CLEAR NL & LNL
  491. -       DEX
  492. -       BPL .2
  493. -       INC WORDS    MAKE SURE ATN COMES OUT OF NP
  494. -CLRADJ STA SPN
  495. -       LDA #0
  496. -       STA SNUM
  497. -       LDX #7
  498. -.1     STA ADJLIST,X  ERASE OLD ADJS
  499. -       DEX
  500. -       BPL .1
  501. -CARTS  RTS
  502. -TLEAVENP PLA
  503. -       PLA
  504. -TLNP2  LDX NPSP     USED FROM ATN
  505. -       DEX
  506. -       LDA NPSTACK,X
  507. -       STA .1+2
  508. -       DEX
  509. -       LDA NPSTACK,X
  510. -       STA .1+1
  511. -       STX NPSP
  512. -       DEC WORDS    MAKE UP FOR INC ON WAY IN
  513. -.1     JMP 0        JMP TO PROPER EXIT ROUTINE
  514. -NTYPE  .BS 1
  515. -TLINSTR JSR COMBINE
  516. -       LDA NOUNLIST  SHOULD BE 1 INSTR
  517. -       BEQ PALI
  518. -       STA SINSTR
  519. -       LDY NOUNLIST+1
  520. -       BNE POI      BUT ONLY ONE
  521. -       JSR CHECKLOC
  522. -       BCC .3
  523. -       LDA #.1
  524. -       LDY /.1
  525. -       BNE PPS
  526. -.1     .US /I DON'T SEE ANY+/
  527. -       .DA PRINS
  528. -       .US / HERE!@=/
  529. -.3     LDA #9       JMP TO NODE 9
  530. -OUTOFNP LDX CURWORD
  531. -       STA WORDNODE,X    JUMPING TO NODE Z, SO RETURN TO Z RATHER THAN NODE JUST LEFT (F)
  532. -       JSR GETNODE
  533. -       JMP A8
  534. -PALI   LDA #PA2
  535. -       LDY /PA2
  536. -PPS    JMP PS
  537. -PA2    .DA #"$,PLSP
  538. -       .US /AN INSTRUMENT.@=/
  539. -POI    LDA #.1
  540. -       LDY /.1
  541. -       BNE PPS
  542. -.1     .DA #"$,PLSP
  543. -       .US /ONLY ONE INSTRUMENT.@=/
  544. -ODEST  .US /YOU CAN ONLY$/
  545. -       .DA SP
  546. -       .US /ONE DESTINATION.@=/
  547. -NOBJ   .US /I SEE NO SUCH OBJECT.@=/
  548. -SP     .US / SPECIFY =/
  549. -PLSP   .US /PLEASE$/
  550. -       .DA SP,#"=
  551. =tsub
  552. -*
  553. -SAVETSUB16,S6,D1
  554. -* TRANSITION SUBS
  555. -* SEE IF ADJS ELIMINATE ANY NOUNS
  556. -CHECKADJ STX TEMP3+2
  557. -       CLC          IN CASE OF IMMEDIATE EXIT
  558. -       LDX ADJLIST
  559. -       BEQ .4
  560. -       STY TEMP3
  561. -       STA TEMP3+1
  562. -       LDX #ADJEC
  563. -       JSR GETOBJ   FIND ADJS
  564. -       LDY #7
  565. -.7     LDA ADJLIST,Y
  566. -       BEQ .8
  567. -       ORA #$80     SET HIBIT TO MARK AS UNMATCHED
  568. -       STA ADJLIST,Y
  569. -.8     DEY
  570. -       BPL .7
  571. -.0     DEX
  572. -       BMI .3
  573. -       PLA
  574. -       ORA #$80
  575. -       LDY #8
  576. -.1     DEY
  577. -       BMI .0
  578. -       CMP ADJLIST,Y
  579. -       BNE .1
  580. -       AND #$7F     MARK AS MATCHED
  581. -       STA ADJLIST,Y
  582. -       JMP .0
  583. -.3     LDY #8
  584. -.35    DEY
  585. -       BMI .38     ALL ADJS DELETED, NONE ELIMINATED NOUN
  586. -       LDA ADJLIST,Y  NO ADJS SHOULD BE LEFT UNLESS NOT ATTACHED TO NOUN
  587. -       BPL .35      MATCHED
  588. -       SEC          NOUN ELIMINATED
  589. -       .HS 90       BCC
  590. -.38    CLC
  591. -       LDY TEMP3
  592. -       LDA TEMP3+1
  593. -.4     LDX TEMP3+2
  594. -       RTS
  595. -*ELIMINATE SUBSET OBJS NOT IN ROOM
  596. -*ENDLESS LOOP IF A IS IN B IS IN A
  597. -* USED BY TRANSIT & CNDACT
  598. -CHECKLOC STX TEMP3+1
  599. -       STY TEMP3
  600. -       PHA          SAVE OBJ
  601. -.1     CMP ACLOC
  602. -       BEQ .2
  603. -       LDX #IN
  604. -       JSR GETOBJ
  605. -       DEX
  606. -       BMI .3       NOT IN LOC
  607. -       PLA          OBJ LAST OBJ IS IN
  608. -       JMP .1       FIND OBJ THIS ONE IS IN
  609. -.2     STA ILOC     LOC OBJ IS IN
  610. -       CLC
  611. -       .HS B0       BCS
  612. -.3     SEC          NOT HERE,ELIM
  613. -       PLA
  614. -       LDX TEMP3+1
  615. -       LDY TEMP3
  616. -       RTS
  617. -ILOC   .BS 1
  618. -*-------------------------------
  619. -* NL -> OBJLIST
  620. -* WITHOUT ERASING OR DUPLICATING WHAT'S THERE
  621. -NL.OL  LDY #0
  622. -       LDX #$FF
  623. -.1     INX
  624. -       LDA OBJLIST,X  SEARCH FOR 1ST OPEN BYTE
  625. -       BNE .1
  626. -       STX TEMP3    INDEX TO NEXT FREE BYTE IN OBJLIST
  627. -       STX TEMP3+1  IN CASE WE NEED TO DELETE NEW ADDITIONS
  628. -* BECAUSE A COMBINE IN TLOBJ ELIMINATES THEM
  629. -.2     LDA NOUNLIST,Y
  630. -       BEQ .6       DONE
  631. -       LDX TEMP3
  632. -       BEQ .4       NO OBJS IN OBJLIST YET
  633. -       DEX
  634. -.3     CMP OBJLIST,X
  635. -       BEQ .5       SKIP IF ALREADY IN OBJLIST
  636. -       DEX
  637. -       BPL .3
  638. -       LDX TEMP3
  639. -.4     STA OBJLIST,X
  640. -       INC TEMP3
  641. -.5     INY
  642. -       CPY #20
  643. -       BNE .2
  644. -.6     RTS
  645. -*-------------------------------
  646. -* COMBINE NOUNLIST & LNL INTO NOUNLIST
  647. -* DELETING OBJS NOT IN BOTH
  648. -* USED TO ELIMINATE OBJS NOT IN SOURCE
  649. -* ON EXIT A=0
  650. -COMBINE LDA #2       2 PASSES
  651. -       STA PASS
  652. -.1     LDY #0
  653. -.2     LDX LNL,Y
  654. -       BNE .3       OBJECT FOUND
  655. -.25    INY          SKIP BLANK
  656. -       CPY #20
  657. -       BNE .2
  658. -       LDY #19
  659. -       LDA #0
  660. -       DEC PASS
  661. -       BEQ CORTS
  662. -.26    STA NOUNLIST,Y  ZERO NL TO MOVE LNL INTO IT
  663. -       DEY
  664. -       BPL .26
  665. -       BMI .1
  666. -.3     LDA PASS
  667. -       LSR          LOW BIT -> C
  668. -       TXA
  669. -       BCS .5       2ND PASS
  670. -       LDX #19      1ST PASS
  671. -.4     CMP NOUNLIST,X
  672. -       BEQ .25      LEAVE IT ALONE CAUSE IT'S IN BOTH LISTS
  673. -       DEX
  674. -       BPL .4
  675. -       LDA #0
  676. -       STA LNL,Y  DELETE
  677. -       BEQ .25      ALWAYS
  678. -.5     LDX #$FF
  679. -       PHA
  680. -.6     INX
  681. -       LDA NOUNLIST,X
  682. -       BNE .6
  683. -       PLA
  684. -       STA NOUNLIST,X
  685. -       BNE .25      ALWAYS
  686. -CORTS  RTS
  687. -PASS   .BS 1
  688. -*--------------------------------
  689. -* CHECK OBJS FOR LOC & NUM
  690. -* HAVE ALREADY BEEN CHECKED WI SOURCE
  691. -* ELIMINATE UNQUALIFIED WI MESSAGE
  692. -*SEE IF 0,1,OR MORE OBJS
  693. -CHECKOBJ TSX
  694. -       STX STEMP
  695. -       LDA NOUNLIST
  696. -       BNE CH2
  697. -       LDA JUCONJ   DON'T PRINT ERRMSG TILL LAST CHECK OF NOUNLIST
  698. -       ORA OBJLIST  OBJ LEFT FROM BEFORE CONJ?
  699. -       BNE CORTS
  700. -PLADNS PLA
  701. -       PLA
  702. -DNS    LDY /DONSEE
  703. -       LDA #DONSEE
  704. -       BIT CASEFRAME
  705. -       BVS .53      OBJS IN ROOM PRMITTED?
  706. -       LDY /NOTCAR  OBJS NOT IN ROOM,BUT SINCE VERB DOESN'T PERMIT
  707. -       LDA #NOTCAR  OBJS IN ROOM,PRINT NOTCAR
  708. -.53    JMP PS
  709. -CH2    LDA NOUNLIST+1
  710. -       ORA UCONJ    2 OBJS IF 2 IN NL OR ANOTHER TO COME AFT CONJ
  711. -       STA TWOOBJ
  712. -       JSR STNL
  713. -       LDY #20
  714. -       LDA #0
  715. -.05    STA LOCLIST-1,Y
  716. -       DEY
  717. -       BNE .05
  718. -* FOR EACH OBJ,RECURSIVELY FIND OBJ WHICH IT'S IN
  719. -.10    STY NOTDONE
  720. -.15    STY TEMPIND
  721. -       LDA (TEMP+2),Y
  722. -       BEQ .25
  723. -       CMP ACLOC    DOESN'T MATTER IF LOC I'M IN IS IN SOMETHING ELSE
  724. -       BEQ .20
  725. -       CMP ACTOR    STOP RECURSION AT ME,THO ME IS IN (LOC)
  726. -       BNE .19
  727. -       LDA NOUNLIST,Y
  728. -       CMP ACTOR    IS IT ME?
  729. -       BEQ .16
  730. -       LDA ACTOR    NO,LOC IS ME
  731. -       BNE .20
  732. -.16    LDA ACLOC    YES,LOC IS (LOC)
  733. -       JMP .20
  734. -.19    LDX #IN
  735. -       JSR GETOBJ   FIND WHAT CURRENT OBJ IS IN
  736. -       LDY TEMPIND
  737. -       DEX
  738. -       BMI .22      OBJ ISN'T IN ANYTHING
  739. -       PLA
  740. -       INC NOTDONE  FLAG:FOUND A PAPA OBJ
  741. -.20    STA LOCLIST,Y  REP OBJ WITH OBJ IT'S IN
  742. -.22    INY
  743. -       CPY #20
  744. -       BNE .15
  745. -.25    LDA NOTDONE
  746. -       BEQ CH30
  747. -       LDA #LOCLIST
  748. -       STA TEMP+2   ALL SUBSEQUENT TIMES THRU,READ FROM LOCLIST INSTEAD
  749. -       LDA /LOCLIST
  750. -       STA TEMP+3
  751. -       LDY #0
  752. -       BEQ .10
  753. -*ELIMINATE OBJS NOT IN ALLOWED LOCATIONS (ABSENT,LOC, OR ACTOR)
  754. -CH30   STY OBJS     #OBJS
  755. -       DEY          HIGHEST INDEXED OBJ
  756. -       STY TEMPIND
  757. -       LDA CASEFRAME
  758. -       BMI .60      ABSENT OBJS ALLOWED
  759. -       LDA #9
  760. -       STA ERRMSG   BLANK
  761. -       LDA #0
  762. -.35    LDX LOCLIST,Y
  763. -       CPX ACLOC    IN LOC?
  764. -       BEQ .40
  765. -       CPX ACTOR    IN ME?
  766. -       BEQ .40
  767. -       JSR ELIM
  768. -.37    STA NOUNLIST,Y  DELETE
  769. -.40    DEY
  770. -       BPL .35
  771. -       LDA UALL
  772. -       BEQ .60
  773. -       LDX OBJS
  774. -       DEX
  775. -       BNE .60
  776. -       LDA UCONJ
  777. -       STA TWOOBJ   CHANGE IF OBJS FROM ALL HAVE BEEN ELIMINATED
  778. -.60    BIT CASEFRAME
  779. -       BVS .65      OBJS IN ROOM ALLOWED
  780. -       LDA ACLOC
  781. -       STA TEMPIND+1  SEE IF OBJS ARE IN (LOC)
  782. -       LDA #1       NOTCAR
  783. -       STA ERRMSG
  784. -       JSR CLOC
  785. -.65    LDA CASEFRAME
  786. -       AND #$20
  787. -       BNE .70      OBJS IN ME ALLOWED
  788. -       LDA ACTOR
  789. -       STA TEMPIND+1  SEE IF OBJS ARE IN ACTOR
  790. -       LDA #0       CARR
  791. -       STA ERRMSG
  792. -       JSR CLOC
  793. -.70    JSR COMP
  794. -       LDY SNUM
  795. -       BEQ CHL
  796. -       CPY #21      MAX+1
  797. -       BCC .83
  798. -.95    LDY /NSM
  799. -       LDA #NSM
  800. -       JMP PS
  801. -.83    DEY          INDEX STARTS AT 0
  802. -       JSR STNL
  803. -       LDA (TEMP+2),Y
  804. -       BEQ .95      ?"I DON'T SEE THAT MANY" & CONT
  805. -       LDA #0
  806. -.85    INY
  807. -       CPY #20
  808. -       BCS CHL
  809. -       STA (TEMP+2),Y
  810. -       BCC .85      ALWAYS:FILLS IN REST OF NOUNLIST WI 00s
  811. -       LDY #0
  812. -CHL    LDA NOUNLIST,Y
  813. -       BEQ COMP
  814. -       JSR CHPROP
  815. -       INY
  816. -       CPY #20
  817. -       BNE CHL
  818. -*COMPRESS NOUNLIST:REMOVE 0'S
  819. -COMP   LDY #0
  820. -       LDX #0
  821. -.1     LDA NOUNLIST,Y
  822. -       STA NOUNLIST,X
  823. -       BEQ .2       IF BLANK,DON'T INX,THUS REMOVING BYTE
  824. -       INX
  825. -.2     INY
  826. -       CPY #20
  827. -       BNE .1
  828. -.3     INX
  829. -       STA NOUNLIST,X
  830. -       CPX #19
  831. -       BNE .3
  832. -       RTS
  833. -* CHECK PROPERTIES OF 1 OBJ AGAINST VERB'S REQUIREMENTS
  834. -CHPROP STY TEMP+3
  835. -       STA TEMP+2
  836. -       JSR PNTOBJ
  837. -       JSR RESVDAT  RESET POINTER TO VERB DATA
  838. -       LDA #2
  839. -       STA ERRMSG
  840. -       LDA CASEFRAME
  841. -       ASL
  842. -       ASL
  843. -       ASL
  844. -       ASL          BIT 4 -> C
  845. -       BCC .10      NO LIST OF ALLOWED OBJS
  846. -       PHA
  847. -.3     JSR VDAT
  848. -       TAY
  849. -       BEQ .64      CAME TO END OF LIST WIOUT FINDINT IT
  850. -       CMP TEMP+2
  851. -       BNE .3
  852. -.7     JSR VDAT
  853. -       TAY
  854. -       BNE .7       MOVE POINTER TO NEXT ITEM
  855. -       PLA
  856. -.10    ASL
  857. -       BCC .20      NO LIST OF FORBIDDEN OBJS
  858. -       PHA
  859. -.13    JSR VDAT
  860. -       CMP TEMP+2
  861. -       BEQ .64      FORBIDDEN OBJ
  862. -       TAY
  863. -       BNE .13      NOT EOL
  864. -       PLA
  865. -.20    INC ERRMSG
  866. -       ASL
  867. -       BCS .30      HUMAN OBJ ALLOWED
  868. -       PHA
  869. -       LDY #5       PROP3
  870. -       LDA (MISC),Y
  871. -       AND #8
  872. -       BNE .64      HUMAN,FORBIDDEN
  873. -       PLA
  874. -.30    INC ERRMSG
  875. -       ASL
  876. -       BCS .40      ANIMATE OBJ ALLOWED
  877. -       PHA
  878. -       LDY #5
  879. -       LDA (MISC),Y
  880. -       AND #$10
  881. -       BNE .64      ANIMATE,FORBIDDEN
  882. -       PLA
  883. -.40    INC ERRMSG
  884. -       ASL
  885. -       BCS .50      INANIMATE OBJ ALLOWED
  886. -       PHA
  887. -       LDY #5
  888. -       LDA (MISC),Y
  889. -       AND #$10
  890. -       BEQ .64      INANIMATE,FORBIDDEN
  891. -       PLA
  892. -.50    INC ERRMSG
  893. -       LDA CASEFRAME+1
  894. -       ASL
  895. -       BCC .60
  896. -       PHA
  897. -       JSR VDAT     X
  898. -       LDY #0       SIZE
  899. -       CMP (MISC),Y
  900. -       BCC .64      SIZE>X
  901. -       PLA
  902. -.60    INC ERRMSG
  903. -       ASL
  904. -       BCC .70
  905. -       PHA
  906. -       JSR VDAT     Y
  907. -       LDY #0
  908. -       CMP (MISC),Y
  909. -       BCC .67
  910. -.64    PLA          A WAS SAVED
  911. -.65    JMP PELIM
  912. -.67    PLA
  913. -.70    ASL
  914. -       BCC .80
  915. -       PHA
  916. -       JSR TBIT
  917. -       BNE .64
  918. -       PLA
  919. -.80    ASL
  920. -       BCS .90      BURNT/BROKEN PERMITTED
  921. -       LDA #8
  922. -       STA ERRMSG
  923. -       LDY #5
  924. -       LDA (MISC),Y
  925. -       AND #$60
  926. -       BNE .65
  927. -.90    LDY TEMP+3
  928. -       RTS
  929. -* TEST BIT: ON EXIT Z=1 IFF ANY OF BITS ARE SET
  930. -TBIT   LDY #2
  931. -       STY ERRMSG
  932. -.1     INY
  933. -       JSR VDAT
  934. -       TAX
  935. -       BEQ .2
  936. -       AND (MISC),Y
  937. -       BNE .4       OR:SUCCESS IF ANY OF BITS IS SET
  938. -.2     CPY #5
  939. -       BNE .1
  940. -       INY          Z<=0:3 BYTES WIOUT MATCHED PROP. FAILURE IF 3 00s.
  941. -       RTS
  942. -.3     INY
  943. -       JSR VDAT     ADVANCE VDAT
  944. -.4     CPY #5
  945. -       BNE .3
  946. -       RTS          Z=1
  947. -*GET VERB DATA
  948. -VDAT   LDA $FFFF    VERB DATA
  949. -       INC VDAT+1
  950. -       BNE .1
  951. -       INC VDAT+2
  952. -.1     RTS
  953. -STNL   LDA #NOUNLIST
  954. -       STA TEMP+2
  955. -       LDX /NOUNLIST
  956. -       STX TEMP+3
  957. -       RTS
  958. -* DELETE OBJS IN FORBIDDEN LOCS
  959. -CLOC   LDY TEMPIND
  960. -       LDA #0
  961. -.1     LDX LOCLIST,Y
  962. -       CPX TEMPIND+1     FORBIDDEN LOC?
  963. -       BNE .2
  964. -       JSR ELIM     ? MESSAGE
  965. -.2     DEY
  966. -       BPL .1
  967. -       RTS
  968. -NOTDONE .BS 1       1=STILL FINDING PAPA OBJECTS
  969. -TWOOBJ .BS 1        0=1 OBJ IN NL
  970. -OBJS   .BS 1        #OBJS
  971. -DONSEE .US /I DON'T SEE ANY HERE.@=/
  972. -NSM    .US /YOU DON'T SEE THAT MANY.@=/
  973. -STEMP  .BS 1        TEMP STORAGE FOR STACK POINTER
  974. -* SKIP OBJ DATA
  975. -* 0-7F SKIP THAT MANY BYTES
  976. -* 80+  LIST
  977. -SKPOBJ LDA #$10     BPL
  978. -SKP2   STA .7
  979. -       JSR RESVDAT
  980. -       LDY #18      19 BITS
  981. -       LDA CASEFRAME+2
  982. -       STA TEMP+3
  983. -       LDA CASEFRAME+1
  984. -       STA TEMP+2
  985. -       LDA CASEFRAME
  986. -.1     ASL TEMP+3
  987. -       ROL TEMP+2
  988. -       ROL
  989. -       BCC .2
  990. -       LDX SKPTAB,Y
  991. -       BEQ .2       NO DATA
  992. -       PHA
  993. -       BMI .15
  994. -.12    JSR VDAT
  995. -       DEX
  996. -       BNE .12
  997. -       JMP .17
  998. -.15    JSR VDAT     LIST
  999. -       TAX
  1000. -       BNE .15
  1001. -.17    PLA
  1002. -.2     DEY
  1003. -.7     BPL .1       BNE POINTS VDAT AT VERB PARTS
  1004. -       RTS
  1005. -SKPTAB .HS FFFFFF000000FF00030101000000FFFF000000
  1006. -* ELIMINATE A NOUN FROM NLIST
  1007. -* IF MORE THAN 1 NOUN OR BEFORE CONJ,PRINT NAME OF NOUN BEFORE MESSAGE
  1008. -* & GO BACK FOR MORE. ELSE PRINT & QUIT.
  1009. -* ON ENTRY: Y POINTS TO OBJ IN NOUNLIST
  1010. -* SAVES Y,SCRAMBLES A&X
  1011. -PELIM  LDY TEMP+3   CALLED FROM CHPROP
  1012. -ELIM   STY TEMP+3
  1013. -       DEC OBJS     1 MORE GONE
  1014. -       LDA NMSG
  1015. -       BNE .17
  1016. -       LDA TWOOBJ
  1017. -       BEQ .1
  1018. -       LDA UALL
  1019. -       BEQ .12
  1020. -       LDA OBJS
  1021. -       BNE .17      ONLY PRINT LAST REJECT IN CASE OF ALL
  1022. -       BEQ .1
  1023. -.12    LDA NOUNLIST,Y    CAN'T LOAD FROM TEMP+2 SINCE CH30 CALLS ELIM
  1024. -       JSR OBJCOL
  1025. -.1     LDX ERRMSG
  1026. -       CPX #9
  1027. -       BNE .15
  1028. -       JSR DNS
  1029. -       JMP .17
  1030. -.15    LDY MSGS+9,X
  1031. -       LDA MSGS,X
  1032. -       JSR PS
  1033. -* WOULD SAVE BYTES HERE BY PRINTING CR, BUT NOTCAR IS USED BY ANOTHER
  1034. -.17    LDA OBJS     ANY LEFT?
  1035. -       ORA JUCONJ   MORE COMING?
  1036. -       BNE .3
  1037. -       LDX STEMP    ONLY 1 OBJ & IT WAS BLOWN. BACK TO CALLER.
  1038. -       TXS
  1039. -.3     LDY TEMP+3   MULT OBJS,RTS
  1040. -       LDA #0
  1041. -       STA NOUNLIST,Y  DELETE OBJ
  1042. -ELRTS  RTS
  1043. -ERRMSG .BS 1        MSG#
  1044. -NMSG   .BS 1        0=PRINT MSG
  1045. -* CHANGE MSGS+9 IF YOU CHANGE # MSGS
  1046. -MSGS   .DA #CAR,#NOTCAR,#.3,#.4,#.5,#.6,#.7,#.8,#IR
  1047. -       .DA /CAR,/NOTCAR,/.3,/.4,/.5,/.6,/.7,/.8,/IR
  1048. -.3     .DA #"$,.10,#"+,.9
  1049. -       .US /<.@=/  SKIPPED IF UALL
  1050. -.4     .DA #"$,.10
  1051. -       .US /A PERSON!@=/
  1052. -.5     .DA #"$,.10
  1053. -       .US /AN ANIMAL!@=/
  1054. -.6     .DA #"$,.10
  1055. -       .US /SOMETHING THAT'S NOT ALIVE!@=/
  1056. -.7     .DA #"$,.11
  1057. -       .US /BIG!@=/
  1058. -.8     .DA #"$,.11
  1059. -       .US /SMALL.@=/
  1060. -.9     LDA UALL
  1061. -       BEQ .20
  1062. -       LDA #.12-1   FOR ALL,DON'T PRINT LAST OBJ
  1063. -       LDX /.12-1
  1064. -       JMP SWPR
  1065. -.20    LDX TEMP+3
  1066. -       LDA NOUNLIST,X
  1067. -       STA $10
  1068. -       RTS
  1069. -.10    .US /YOU CAN'T +/
  1070. -       .DA PRVERB,#" ,#"=
  1071. -.11    .US /IT'S TOO =/
  1072. -.12    .US /ANYTHING HERE.@=/
  1073. -IR     .US /YOU CAN'T. IT'S RUINED.@=/
  1074. -CAR    .US /YOU'RE$/
  1075. -       .DA CI,#"=
  1076. -NOTCAR .US /YOU'RE NOT$/
  1077. -       .DA CI,#"=
  1078. -CI     .US / CARRYING IT.@=/
  1079. -*--------------------------------
  1080. -CHKLST LDY #40      NL & LNL
  1081. -       LDA #0
  1082. -.1     STA NOUNLIST-1,Y
  1083. -       DEY
  1084. -       BNE .1
  1085. -.2     JSR VDAT
  1086. -       TAX
  1087. -       BEQ .3       EOL
  1088. -       STA LNL,Y    PUT PERMITTED LIST IN LNL
  1089. -       INY
  1090. -       BNE .2       ALWAYS
  1091. -.3     RTS
  1092. -*CHECK SENT FOR REQRD PARTS
  1093. -CHECKSENT LDA CASEFRAME+1
  1094. -       LSR          DEST REQD?
  1095. -       BCC .1       NO
  1096. -       LDY SDEST    GIVEN?
  1097. -       BNE .1       YES
  1098. -       LDA #74      GIVE DEST!
  1099. -       JMP PMSG
  1100. -.1     AND #2       (4 BEFORE LSR) INSTR REQD?
  1101. -       ORA SINSTR   GIVEN?
  1102. -       BNE .8       YES
  1103. -       JMP CDEST
  1104. -.8     JSR CHKLST
  1105. -       LDA SINSTR
  1106. -       BEQ .40
  1107. -* CHECK INSTR
  1108. -       STA NOUNLIST
  1109. -       STA $10
  1110. -       JSR COMBINE
  1111. -       LDA NOUNLIST
  1112. -       BNE .32
  1113. -       LDY /.30
  1114. -       LDA #.30
  1115. -       JMP PS
  1116. -.32    JSR CINME
  1117. -       BEQ .55      IN ME
  1118. -       LDA SINSTR
  1119. -       JSR PNTOBJ   INEFFICIENT
  1120. -       LDY #3
  1121. -       LDA (MISC),Y
  1122. -       AND #$20
  1123. -       BNE .55      CAN'T CARRY LIQUID
  1124. -       LDA SINSTR
  1125. -       LDX #PARTOF
  1126. -       JSR GETOBJ
  1127. -       PLA
  1128. -       DEX
  1129. -       BPL .55      CAN USE INSTR WHICH IS PART WIOUT CARRYING IT
  1130. -* IE HANDS,HOSE,TEETH
  1131. -* USED TO PICK UP INSTRUMENT.  BUT THIS CAUSED PROBLEMS WITH
  1132. -* RESTRICTIONS (IE OWNERSHIP).
  1133. -       PHA
  1134. -       LDA #131     YOU DON'T HAVE >
  1135. -       JMP PMSG
  1136. -* INSTR REQD, NOT GIVEN
  1137. -* PUT OBJS IN ME IN NL & INSTRLIST IN LNL, THEN COMBINE
  1138. -.40    LDA #ME
  1139. -       LDX #HOLDS
  1140. -       JSR GETOBJ
  1141. -.45    DEX
  1142. -       BMI .50
  1143. -       PLA
  1144. -       STA NOUNLIST,X
  1145. -       BNE .45      ALWAYS
  1146. -.50    JSR COMBINE
  1147. -       LDA NOUNLIST+1
  1148. -       BEQ .51
  1149. -.60    LDA #73      WITH WHAT?
  1150. -       JMP PMSG
  1151. -.51    LDA NOUNLIST
  1152. -       BEQ .60
  1153. -       STA SINSTR
  1154. -       LDY /.70
  1155. -       LDA #.70
  1156. -.54    JSR PRINT
  1157. -.55    LDA SINSTR
  1158. -       JSR PNTOBJ
  1159. -       LDY #5
  1160. -       LDA (MISC),Y
  1161. -       AND #$60     BURNT OR BROKEN?
  1162. -.58    BEQ CDEST
  1163. -       LDA #IR
  1164. -       LDY /IR
  1165. -       JMP PS
  1166. -.30    .US /YOU CAN'T +/
  1167. -       .DA PRVERB
  1168. -       .US / WITH <!@=/
  1169. -.70    .US /(WITH+/
  1170. -       .DA PRINS,#"),#"@,#"=
  1171. -PRINS  LDA SINSTR
  1172. -PIT    PHA
  1173. -       STY $24
  1174. -       LDA #$A0
  1175. -       JSR FDF0     SPACE LEFT OUT OF STRING SO A COULD BE IN ANYTHING
  1176. -       LDA $1A
  1177. -       STA $50
  1178. -       LDA $1B
  1179. -       STA $51
  1180. -       PLA
  1181. -       JSR PROBJ
  1182. -       LDA $50
  1183. -       LDX $51
  1184. -SWPR   STA $1A
  1185. -       STX $1B
  1186. -       RTS
  1187. -CDEST  LDA CASEFRAME+2
  1188. -       BPL .10      NO DESTLIST
  1189. -       JSR CHKLST   ADVANCE VDAT
  1190. -       LDA SDEST
  1191. -       BEQ .10      NO DEST
  1192. -       STA NOUNLIST
  1193. -       JSR COMBINE
  1194. -       LDA NOUNLIST DEST IN DESTLIST?
  1195. -       BNE .10      Y
  1196. -       LDA #108     USE A DIFFERENT DEST
  1197. -.8     JMP PMSG
  1198. -.10    LDA CASEFRAME+2
  1199. -       ASL
  1200. -       BPL .20      NO PREPLIST
  1201. -       JSR CHKLST
  1202. -       LDA SPM
  1203. -       BEQ .20      NO PREP (UNLIKELY)
  1204. -       STA NOUNLIST
  1205. -       JSR COMBINE
  1206. -       LDA #109     TRY A DIF PREP
  1207. -       LDX NOUNLIST PREP IN PREPLIST?
  1208. -       BEQ .8       N
  1209. -.20    LDA CASEFRAME+2
  1210. -       AND #$10
  1211. -       BEQ HANDLER  VERB PART N/R
  1212. -       LDA #113     THAT VERB NEEDS TWO PARTS
  1213. -       LDX PFND
  1214. -       BEQ .8
  1215. -* FALL THRU TO HANDLER
  1216. =verbs
  1217. -*
  1218. -SAVEVERBS33.1,S6,D2
  1219. -TATT   .DA FBULB,CAMERA,TO,#FBULB,#ON,#CAMERA
  1220. -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
  1221. -.1     LDA SINSTR
  1222. -       STA $10
  1223. -       JSR PNTOBJ
  1224. -       LDY #0       SIZE
  1225. -       LDA (MISC),Y
  1226. -       PHA
  1227. -       LDA CUROBJ
  1228. -       JSR PNTOBJ
  1229. -       LDY #0       SIZE
  1230. -       PLA
  1231. -       LSR          DIV BY 2
  1232. -       CMP (MISC),Y
  1233. -       TYA          Z=1
  1234. -       BCS .2       INSTRSIZE/2>=OBJSIZE
  1235. -       DEY
  1236. -.2     RTS
  1237. -TBRU   .DA #TEETH,CAV,TBRUSH,#ZERO,CAVFORM,#0,#ZERO,CAVFORM+1,#AMSG,#19,#ELSE,#POKE,CAVFORM+1,/18*60,#UPSCR,#2,#AMSG,20
  1238. -TBUR   .DA #$40,0,TC,#VOBJ,#ADJEC,#BURNT,0,#$20  WAS MATCHES
  1239. -TCHEC  .DA #BOOK1,#BOOK2,#BOOK3,BOOK4,#OUT,CHEOUT
  1240. -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
  1241. -TCHEW  .DA #$10,0,#PRIMED,#AMSG,#6,#$80,#NULL,#AMSG,22
  1242. -TCLE   .DA #CLOTH,#HANDS,ME,#71,#SOAP1,#SOAP2,#WATER,#WATER+1,#WATER+2,#WATER+3,WATER+4,#VOBJ,#ADJEC,#CLEAN
  1243. -TCLI   .DA #IN,ON,#SLOTIS,#VDEST,#SHELF,#UPSCR,3,#VACT,#IN,#VDEST
  1244. -TCLOS  .DA #4,0,OC,$DFFF,#$FF
  1245. -TCLOT  .DA CLOTH,#OBJIS,#ME,#DO,#ME,#WEA,#VINSTR,0,0,#ELSE,#AMSG,76
  1246. -TCOM   .DA COMB,#OBJIS,#VACT,#AMSG,#36,#ELSE,#AMSG,76
  1247. -TCUT   .DA ID,TC,#VOBJ,#ADJEC,#BROKEN,0,#$40  LEFTOVER
  1248. -TD     .DA HD
  1249. -TDAM   .DA ME,#NULL,#AMSG,#250,#AINC,.2,#$80,#PEEK,.2,#3,#AINC,GAMOVR,#AJSR,.5,#0
  1250. -.2     .BS 1        # OF CUSSES (NOT SAVED)
  1251. -* SCARE FOUL-MOUTHED PLAYER
  1252. -.5     LDY #0
  1253. -       STY .2
  1254. -       STY BUF
  1255. -       STY MISC
  1256. -       STY CMND     SEEK
  1257. -       STY SECT
  1258. -       LDA #2
  1259. -       STA BUF+1
  1260. -.7     LDA .10,Y
  1261. -       STA TRACK
  1262. -       JSR RWTS
  1263. -       INC MISC
  1264. -       LDY MISC
  1265. -       CPY #6
  1266. -       BCC .7
  1267. -       RTS
  1268. -.10    .DA #0,#15,#30,#10,#11,#12
  1269. -TDEB   .DA HDEB
  1270. -TDEV   .DA FILM,#NULL,#AMSG,23
  1271. -TDIE   .DA #NULL,#AMSG,24
  1272. -TDRIB  .DA BALL
  1273. -TDRI   .DA #$20,0,#BITSET,#VOBJ,#$10,0,#GOTO,TEA2
  1274. -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
  1275. -.2     .DA #0,HSWA
  1276. -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
  1277. -TDRY   .DA #WATER,#WATER+1,#WATER+2,#WATER+3,WATER+4,#90,TOWEL,#ISEDG+$40,#VOBJ,#ADJEC,#WET,#AMSG,25,#VOBJ,#ADJEC,#WET
  1278. -TDUM   .DA #MGET+1,#BITSET,#VOBJ,4,0,#BITSET+$40,VOBJ,$20,#AMSG,#1,#SKIP,#$80,#ISEDG+$40,#VOBJ,#HOLDS,#VX,#AMSG,#92,#SKIP
  1279. -.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
  1280. -TDUN   .DA BALL,#14,#HOOP1,HOOP2,IN,#LOCIS,#GYM1,#$80,#LOCIS,#GYM2,#AMSG,#27,#ELSE,#AMSG,26
  1281. -TE     .DA HE
  1282. -* PRIMED=POISON
  1283. -TEAT   .DA #$10,0,#NULL,#NOTH
  1284. -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
  1285. -.1     .DA #POKE,TIRED,#7,#POKE,TIRED+1,#0,#AINC,AD
  1286. -.2     .DA #0,HEAT
  1287. -TELL   .DA #NULL,#POKE,ELOP,$EA
  1288. -TEND   .DA GAME,#NULL,#AINC,GAMOVR,#0
  1289. -TERA   .DA ARR,#NULL,#DELIT,ARR
  1290. -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
  1291. -.1     LDA #FBULB
  1292. -       JSR PNTOBJ
  1293. -       LDY #4
  1294. -       LDA (MISC),Y
  1295. -       AND #7
  1296. -       STA $50
  1297. -       LDA #0
  1298. -       STA $51
  1299. -       RTS          MSG PRINTED BY HEXA
  1300. -TEXI   .DA HEXI
  1301. -TEXT   .DA #WATER,#WATER+1,#WATER+2,#WATER+3,WATER+4,#BITSET,#VOBJ,0,#$20,#AMSG,#19,#ELSE,#AMSG,33
  1302. -* JSR GTIME 2* AS OFTEN
  1303. -TFAS   .DA .1
  1304. -.1     ASL TR       TR=TR*2
  1305. -       BNE .2
  1306. -       ROR TR       DON'T SHIFT 1 BIT OUT & GET 0
  1307. -.2     RTS
  1308. -TFIL   .DA #0,8,#WATER,#WATER+1,#WATER+2,#WATER+3,WATER+4,#VINSTR,#IN,#VOBJ
  1309. -* CAN'T USE BIT REP SINCE ME MUST THEN PICK LIQUID UP
  1310. -TFIN   .DA #INME,#VOBJ,#AMSG,#124,#SKIP,#$80,#INROOM,#VOBJ,#AMSG,#125,#ELSE,#AMSG,126
  1311. -TFLU   .DA #TOILET1,TOILET2,#NULL,#AMSG,#110
  1312. -.1     .DA #UNBIND,#$80,#ISEDG,#VOBJ,#HOLDS,#VX,#DELIT,#VX,#GOTO,.1,#0,#$FF,$FFBF
  1313. -TFOL   .DA #ACTME,#AMSG,#185,#SKIP,#$80,#OBJIS+$40,#ME,#$80,#SLOTIS,#VACT,#LIB,#$80,#SLOTIS,#VACT,#MARK,#POKE,$10,#VACT,#AMSG,#154,#SKIP
  1314. -       .DA #$80,#ZERO+$40,SCRIM,#GOTO,.5,#$80,#SLOTIS,#VACT,#PROF,#$80,#SLOTIS,#VACT,#PRIS1,#AMSG,#188,#ELSE
  1315. -.5     .DA #POKE,SFL,#2,#SPAWN,#VACT,#PFOL,VOBJ
  1316. -MGET   .EQ 22
  1317. -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
  1318. -* SIMULATES REJECTION FOR CARRYING OBJ
  1319. -* SEPARATE HANDLING BECAUSE YOU CAN GET AN OBJ IN AN OBJ IN ME
  1320. -TGIV   .DA #MGET,TO,#VACT,#OWNS,#VOBJ,#VOBJ,#IN,#VDEST
  1321. -TGO    .DA #71,IN,HGO,#VACT,#IN,#VDEST
  1322. -THEA   .DA #OBJIS,#TAPE1,#$80,#OBJIS,#TAPE2,#GOTO,.1,#0,.2
  1323. -.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
  1324. -.3     .US /I'LL TELL YOU IF IT SAYS ANYTHING.@=/
  1325. -.2     LDY /.3
  1326. -       LDA #.3
  1327. -PSNOK  JSR PS
  1328. -       JMP NOK
  1329. -THEL   .DA ME,#POWDER,TAPE2,.1
  1330. -.1     LDA SCORE
  1331. -       BNE .3
  1332. -       LDA #.2
  1333. -       LDY /.2
  1334. -       BNE PSNOK
  1335. -.2     .US /TALK TO %MARK. HE WANTS TO HELP YOU.@=/
  1336. -.3     LDA HOUR
  1337. -       CMP #9+12
  1338. -       BNE .5
  1339. -       LDA #.4
  1340. -       LDY /.4
  1341. -       JSR PS
  1342. -.5     LDA DAY
  1343. -       CMP #21
  1344. -       BEQ .6
  1345. -       LDA KSC+4    PUSHED PANEL?
  1346. -       BNE .6       YES
  1347. -       LDA #.7
  1348. -       LDY /.7
  1349. -       JSR PS
  1350. -.6     JSR INLINE
  1351. -       .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
  1352. -       .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
  1353. -       .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
  1354. -.4     .US /YOU'D BETTER GET TO BED.@=/
  1355. -.7     .US /YOU'D BEST START LOOKING HIGH AND LOW FOR A WAY OUT.@=/
  1356. -THIT   .DA #BAR,#GUN,#HOSE,HANDS,#BITSET,#VOBJ,0,#$10,#DO,#VACT,#KIL,#VOBJ,0,VINSTR,#ELSE,#DO,#VACT,#BRE,#VOBJ,0,VINSTR,#0
  1357. -TI     .DA HI
  1358. -TJUM   .DA #LOCIS,#STAIR1,#$80,#LOCIS,#STAIR2,#$80,#LOCIS,#STAIR4,#AMSG,#43,#AINC,GAMOVR,#ELSE,#AMSG,120
  1359. -TKIL   .DA #BAR,#GUN,#HOSE,#HANDS
  1360. -.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
  1361. -       .DA #$80,#JSR,IMP,#AMSG,#204,#SKIP,#$80,#LOCIS+$40,#OFFI,#AMSG,#44,#GOTO,NABBED,#ELSE,#AMSG,#162
  1362. -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
  1363. -       .DA HSWA     SO TEA2 CAN GOTO SLP
  1364. -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
  1365. -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
  1366. -TLOA   .DA GAME,HLOA
  1367. -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
  1368. -.1     LDA #12      (CLOSED)
  1369. -       JMP PADJ
  1370. -TLOO   .DA #IN,#ON,#UNDER,THRU,.1
  1371. -.1     JSR NOK
  1372. -.12    LDA LIGHT
  1373. -       BNE .15
  1374. -       JMP PLOC     IT'S DARK!
  1375. -.15    LDA WTFIN    CAN'T DO THIS IN SPCACT SINCE PRLOC USES VDAT
  1376. -       CMP #VI
  1377. -       BNE .2
  1378. -       JMP PRLOC
  1379. -.2     LDX SPM
  1380. -       BNE .21
  1381. -       LDA #61      HUH? (LOOK N)
  1382. -       JMP PMSG
  1383. -.21    LDA SDEST
  1384. -       CMP LOC      ONLY I LOOK
  1385. -       BEQ .25      CAN SEE IN LOC EVEN IF CLOSED (IE CLOSET)
  1386. -       CPX #IN
  1387. -       BNE .23
  1388. -       PHA
  1389. -       JSR PNTOBJ
  1390. -       LDY #3
  1391. -       LDA (MISC),Y
  1392. -       AND #4       OPENABLE?
  1393. -       BEQ .24      NO
  1394. -       INY
  1395. -       LDA (MISC),Y
  1396. -       BMI .24      TRANSPARENT
  1397. -       AND #$20
  1398. -       BNE .24      OPEN
  1399. -       PLA
  1400. -       JMP IC
  1401. -.24    PLA
  1402. -.23    PHA
  1403. -       JSR FINDO
  1404. -       PLA
  1405. -       BCC .25      CAN REACH IT
  1406. -       RTS
  1407. -.25    LDX SPM
  1408. -       CPX #THRU
  1409. -       BEQ .8
  1410. -       PHA
  1411. -       JSR CLCPNT   INVERT PREP
  1412. -       TAX
  1413. -       PLA
  1414. -       JSR GETOBJ
  1415. -       DEX
  1416. -       BPL .4
  1417. -.3     LDX SPM
  1418. -       CPX #IN
  1419. -       BNE .37
  1420. -       LDA SDEST
  1421. -       CMP #TOILET1
  1422. -       BEQ .34
  1423. -       CMP #TOILET2
  1424. -       BNE .37
  1425. -.34    JSR PNTOBJ
  1426. -       LDY #4
  1427. -       LDA (MISC),Y
  1428. -       AND #$40
  1429. -       BEQ .37
  1430. -       LDA #111     IT'S BEEN USED.
  1431. -       .HS 2C       BIT
  1432. -.37    LDA #92      THERE'S NOTHING THERE
  1433. -       JMP PMSG
  1434. -.4     LDA #0
  1435. -       STA TEMP+2
  1436. -       STX TEMP+1   PROBJ USES TEMP
  1437. -.5     PLA
  1438. -       STA $10
  1439. -       LDY SPM
  1440. -       CPY #IN
  1441. -       BNE .55      ONLY IN CAN'T DISPLAY INVISIBLE OBJS
  1442. -       JSR PNTOBJ
  1443. -       LDY #5
  1444. -       LDA (MISC),Y
  1445. -       BMI .7       INVISIBLE
  1446. -.55    CLC
  1447. -       LDA TEMP+2   0 OR 1
  1448. -       BNE .6
  1449. -       INC TEMP+2
  1450. -.6     ADC #29      YOU SEE A,AND A
  1451. -       JSR PADJ
  1452. -.7     DEC TEMP+1
  1453. -       BPL .5
  1454. -       LDA TEMP+2
  1455. -       BEQ .3       ALL INVISIBLE
  1456. -       JMP PR       .<CR>
  1457. -*8     CMP #WINDOW
  1458. -*      BNE .9
  1459. -.8     LDA #93      YOU CAN'T LOOK THRU THAT!  (NOTHING IN INMATE)
  1460. -       JMP PMSG
  1461. -TLOW   .DA #NULL,#ADEC,LWC,#0
  1462. -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
  1463. -       .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
  1464. -TN     .DA HN
  1465. -TNOD   .DA HNOD
  1466. -TNOE   .DA #NULL,#POKE,ELOP,$88  DEY
  1467. -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
  1468. -       .DA #$80,#OBJIS,DOOR1,#ZERO,BARREM,#AMSG,#91,#SKIP,#$80,#OBJIS,#DOOR1,#UPSCR,#5,#$80,#OBJIS,#FLASH,#DO,#VACT,#UNLI,FLASH,0,#0
  1469. -       .DA #$80,#OBJIS+$40,#TC,#GOTO,.0,#$80,#ISEDG,#MAG,#ON,#TC,#UPSCR,#18,#ELSE,#AMSG,#216,#POKE,MT,#3
  1470. -.0     .DA #0,.1,$2000,#0
  1471. -* OBJS WHICH CONNECT LOCS WHEN OPEN
  1472. -.1     LDA #$FF     OPEN
  1473. -       .HS 2C       BIT
  1474. -OC     LDA #0       CLOSE
  1475. -       STA .7
  1476. -* CHECK TIME DOORS LEFT OPEN
  1477. -       LDY #3
  1478. -       LDA CUROBJ
  1479. -.12    DEY
  1480. -       BMI .18
  1481. -.15    CMP .8,Y
  1482. -       BNE .12
  1483. -       TYA
  1484. -       ASL          2 BYTES/TIMER
  1485. -       TAY
  1486. -       LDA .7
  1487. -       BEQ .16      CLOSE
  1488. -       LDA #30
  1489. -.16    STA DT,Y
  1490. -.18    LDY #6       #"DOORS"-1
  1491. -       LDA CUROBJ
  1492. -.2     CMP .5,Y
  1493. -       BEQ .3
  1494. -       DEY
  1495. -       BPL .2
  1496. -       RTS
  1497. -.3     TYA
  1498. -       ASL
  1499. -       ASL
  1500. -       TAY
  1501. -       LDA .6+3,Y
  1502. -       PHA
  1503. -       AND .7       0 IF CLOSING
  1504. -       TAX
  1505. -       LDA .6+2,Y   DIR FOR NEXT CHM
  1506. -       PHA
  1507. -       LDA .6,Y
  1508. -       PHA
  1509. -       LDA .6+1,Y
  1510. -       TAY
  1511. -       PLA
  1512. -       PHA
  1513. -       JSR CHM
  1514. -       PLA
  1515. -       AND .7
  1516. -       TAX
  1517. -       PLA
  1518. -       TAY
  1519. -       PLA
  1520. -       JMP CHM
  1521. -.7     .BS 1        0=CLOSE,FF=OPEN
  1522. -.8     .DA #DOOR3,#DOOR5,#DOOR6
  1523. -.5     .DA #CLOSET,#DOOR1,#DOOR2,#DOOR3,#DOOR5,#DOOR6,#DOOR7  DOOR4 CAN ONLY BE BROKEN
  1524. -.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
  1525. -TPHO   .DA CAMERA,#ISEDG+$40,#FBULB,#ON,#CAMERA,#$80,#BITSET,#FBULB,0,#$40,#AMSG,#89,#SKIP,#$80,#CZ,#FBULB,#AMSG,#90,#SKIP,#$80
  1526. -       .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
  1527. -TPIC   .DA #UV,GET
  1528. -TPLA   .DA #TAPE1,#TAPE2,#BALL,PONG,#RECOR,#ED,MRS,RECOR,IN,#OBJIS,#TAPE1,#$80,#OBJIS,#TAPE2,#AJSR,NOK,#DO,#VACT,#HEA,#VOBJ,0,0
  1529. -       .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
  1530. -CVH    LDY /.1
  1531. -       LDA #.1
  1532. -       JMP PSNOK
  1533. -.1     .US /YOU CAN'T +/
  1534. -       .DA PRVERB
  1535. -       .US / HERE!@=/
  1536. -TPOK   .DA HANDS,#OBJIS+$40,#ME,#AJSR,.1,#0
  1537. -.1     LDY /.2
  1538. -       LDA #.2
  1539. -       JMP PS
  1540. -.2     .DA #">,#" ,#"+,PRVERB
  1541. -       .US /S YOU BACK.@=/
  1542. -TPOU   .DA $20,#0,#IN,ON,#ZERO,SDEST,#AMSG,#105,#DELIT,#VOBJ,#SKIP,#ELSE,#AREP,#VOBJ,#VPM,VDEST
  1543. -TPRY   .DA MAG,#COMB,#KEY1,SCREW,#OFF,#PRY,#OUT,PRY,#VOBJ,PARTOF,$FFFF,#$7F
  1544. -MPUS   .EQ 25
  1545. -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
  1546. -.5     LDA WB
  1547. -       EOR #$FF
  1548. -       STA WB
  1549. -       RTS
  1550. -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
  1551. -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
  1552. -       .DA #$80,#OBJIS,#TOWEL,#$80,#ITIN,#TOWEL,#VENT2,#AREP,#VOBJ,#IN,#VENT2,#AMSG,#214,#UPSCR,#19,#ELSE,#AMSG,#103,#DELIT,#VOBJ,#AINC,GT
  1553. -.0     .DA #0
  1554. -.1     LDA CUROBJ
  1555. -       JSR PNTOBJ
  1556. -       LDY #0       SIZE
  1557. -       LDA (MISC),Y
  1558. -       TAY
  1559. -       DEY
  1560. -TPRTS  RTS          Z=1 IF SIZE=1
  1561. -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
  1562. -.30    JSR NOK
  1563. -       LDA LIGHT
  1564. -       BNE .40
  1565. -       JSR PLOC     IT'S DARK
  1566. -       LDA #0       SUCCEED (TO FAIL)
  1567. -.40    RTS
  1568. -.50    LDY #$FF
  1569. -.55    INY
  1570. -       LDA .80,Y    OBJ
  1571. -       BEQ TPRTS    NO MSG FOR OBJ
  1572. -       CMP CUROBJ
  1573. -       BNE .55
  1574. -       LDA .90,Y    MSG#
  1575. -       BNE PMNOK    ALWAYS
  1576. -.80    .DA #BOOK1,#BOOK2,#BOOK3,#BOOK4,#DB,#FILE1,#FILE2,#FILE3,#FILE4,#GRAF,ID
  1577. -.90    .DA #57,#58,#59,#60,#87,#164,#165,#166,#167,#252,#84
  1578. -.0     LDA WB
  1579. -       BNE PDAT
  1580. -.1     LDA #27
  1581. -       JSR PADJ     THE
  1582. -       LDA CUROBJ
  1583. -       JSR POBJ
  1584. -       LDA #0
  1585. -       STA $51
  1586. -       LDA HOUR
  1587. -       BNE .2
  1588. -       LDA #12      0=AFTER MIDNIGHT
  1589. -.2     CMP #13
  1590. -       BCC .3
  1591. -       SBC #12
  1592. -.3     STA $50
  1593. -       LDA #0       SAYS IT IS /:
  1594. -       JSR POBJ     NO CAPS
  1595. -       LDA MINUTE
  1596. -       STA $50
  1597. -       CMP #10
  1598. -       BCS WP35
  1599. -       LDA #"0
  1600. -       JSR COUT
  1601. -       INC $24
  1602. -WP35   LDA #54
  1603. -PMNOK  JSR PMSG
  1604. -       JMP NOK
  1605. -PDAT   LDA #0
  1606. -       STA $51
  1607. -       LDA MONTH
  1608. -       STA $50
  1609. -       LDA #28      THE WATCH SAYS /
  1610. -       JSR PADJ
  1611. -       LDA DAY
  1612. -       STA $50
  1613. -       BNE WP35     ALWAYS
  1614. -TREC   .DA #TAPE1,TAPE2,ON,#NULL,#AMSG,62
  1615. -TREM   .DA #MGET,#ISEDG+$40,#VOBJ,#ON,VACT,#ITIN,#VOBJ,VX,#ITIN,#VX,#VY,#AREP,#VOBJ,#IN,#VY,SKIP,#VOBJ,#IN,#VACT
  1616. -* NOTE REMOVE PUTS OBJS IN ROOM IN ME - THAT'S NOT A BUG, IT'S A FEATURE!
  1617. -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
  1618. -TREW   .DA #TAPE1,TAPE2,RECOR,#ISEDG+$40,#VOBJ,#IN,#RECOR,#AMSG,#63,SKIP,#0,$40
  1619. -TRIP   .DA #FILE1,#FILE2,#FILE3,FILE4,#UV,RIP,#VOBJ,IN
  1620. + END OF ARCHIVE
  1621.