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

  1. From: jac@yoko.rutgers.edu (Jonathan A. Chandross)
  2. Newsgroups: comp.sources.apple2
  3. Subject: v001SRC053:  Inmate Parser -- ATN Based, Part03/05
  4. Message-ID: <May.31.22.43.17.1991.11007@yoko.rutgers.edu>
  5. Date: 1 Jun 91 02:43:18 GMT
  6. Approved: jac@paul.rutgers.edu
  7.  
  8.  
  9. Submitted-by: Phil Goetz (goetz@cs.buffalo.EDU)
  10. Posting-number: Volume 1, Source:53
  11. Archive-name: util/parser/inmate/part03
  12. Architecture: ANY_2
  13. Version-number: 1.00
  14.  
  15. Warning:  Change the line:
  16.     .4     .AS -/^DBLOADINCARD/  IMBEDDED CTRL-D
  17. In the file "start"
  18.     Such that the "^D" is replaced with an actual control-D.
  19.  
  20. News won't post things with ^D's in them.
  21.  
  22. Sorry about this; didn't discover it until I tried to post
  23. this portion.
  24.  
  25. =io
  26. -*
  27. -SAVEIO9,S6,D2
  28. -TIND   .EQ $62,63
  29. -IOBUF  .EQ $B700
  30. -WT     .US /@WHICH?=/
  31. -GN     .US /@CALL IT:=/
  32. -RGS    LDA #1
  33. -       STA CMND
  34. -       JSR FB2F
  35. -       JSR FC58
  36. -       LDA #0       GAME @
  37. -       JMP RG       READ GAME
  38. -HLOA   LDA #1       READ
  39. -       .HS 2C
  40. -HSAV   LDA #2       WRITE
  41. -       PHA
  42. -       LDA #157     INSERT DISK
  43. -       JSR PMSG
  44. -       JSR WKEY     WAIT FOR KEY
  45. -       JSR FB2F
  46. -       JSR FC58
  47. -* READ DIR FROM T11 S1
  48. -       LDY #0
  49. -       STY BUF
  50. -       STY TIND
  51. -       INY
  52. -       STY CMND
  53. -       STY SECT
  54. -       LDY /IOBUF
  55. -       STY BUF+1
  56. -       STY TIND+1
  57. -       LDA #$11
  58. -       STA TRACK
  59. -       JSR RWTS
  60. -       BCC .1
  61. -       PLA
  62. -       RTS
  63. -* DIR FORMAT, FOR EACH TRACK:
  64. -* (TIND),0-15:NAME
  65. -* GAME# A-L (1-12)
  66. -* EACH TAKES 1 TRACK
  67. -.1     LDA #1
  68. -       STA $50    GAME#
  69. -.2     PHA
  70. -       ASL
  71. -       ASL
  72. -       ASL
  73. -       ASL
  74. -       STA TIND     TIND=16*GAME#
  75. -       PLA          LDA $50
  76. -       CLC
  77. -       ADC #"A-1
  78. -       JSR FDF0     PRINT A-L
  79. -       LDA #".
  80. -       JSR FDF0
  81. -       INC $24
  82. -       LDY #0
  83. -.4     LDA (TIND),Y
  84. -       BEQ .5       EONAME
  85. -       JSR FDF0
  86. -       INY
  87. -       CPY #16
  88. -       BCC .4
  89. -.5     JSR FD8E
  90. -       INC $50
  91. -       LDA $50
  92. -       CMP #13      M
  93. -       BNE .2
  94. -       LDY /WT
  95. -       LDA #WT
  96. -       JSR PS
  97. -* FIND WHICH GAME
  98. -.6     JSR WKEY
  99. -       STA $6AF     PRINT TO SCREEN
  100. -       CMP #"M
  101. -       BCS .7       TOO LARGE
  102. -* @->0 L->$C
  103. -       SBC #"@-1    (C=0) @=GAME LOADED TO RESTART
  104. -*      .DO PROD
  105. -*      BEQ .7       @
  106. -*      .FIN
  107. -       BCS .8       JUST RIGHT
  108. -.7     JSR FBDD     BELL
  109. -       JMP .6
  110. -.8     STA $50
  111. -       LDA $C010
  112. -       PLA
  113. -       STA CMND
  114. -       LSR
  115. -       BCS .20      READ
  116. -       LDA $50      TRACK
  117. -       ASL
  118. -       ASL
  119. -       ASL
  120. -       ASL          GAME#(1-12)*16
  121. -       STA TIND
  122. -       LDY /GN
  123. -       LDA #GN
  124. -       JSR PS       CALL IT?
  125. -       JSR INPUT    BIT PRSQT MAY CAUSE BUGS
  126. -       LDY #15
  127. -.9     LDA $200,Y
  128. -       STA (TIND),Y COPY NAME INTO DIR
  129. -       DEY
  130. -       BPL .9
  131. -       INC SECT     DECd BY B793
  132. -       INC BUF+1    DECd BY B793
  133. -       JSR RWTS     WRITE DIR
  134. -       BCS CLS
  135. -.20    LDA $50
  136. -RG     CLC
  137. -       ADC #$12
  138. -       STA TRACK
  139. -       LDA #$F
  140. -       STA SECT
  141. -       LDA #AD
  142. -       STA BUF
  143. -       LDA /AD+$F00
  144. -       STA BUF+1
  145. -       LDA #$10     16 SECTORS
  146. -       JSR RWG
  147. -CLS    JMP FC58
  148. -RWTS   LDA #1
  149. -RWG    STA COUNT
  150. -       LDA #0
  151. -       STA ERR
  152. -.1     LDA /IOB
  153. -       LDY #IOB
  154. -       PHP
  155. -       SEI
  156. -       JSR $BD00
  157. -       BCS .5
  158. -       PLP
  159. -       CLC
  160. -       .HS AC       LDY $XXXX
  161. -.5     PLP
  162. -       SEC
  163. -       LDY SECT
  164. -       DEY
  165. -       BPL .7
  166. -       LDY #$F
  167. -       DEC TRACK
  168. -.7     STY SECT
  169. -       DEC BUF+1
  170. -       DEC COUNT
  171. -       BNE .1
  172. -       BCC WRTS
  173. -.10    LDA #158     DISK ERROR
  174. -       JSR PMSG
  175. -       SEC
  176. -* WAIT FOR KEYPRESS
  177. -WKEY   LDA $C010
  178. -.1     LDA $C000
  179. -       BPL .1       WAIT FOR KEYPRESS
  180. -WRTS   RTS
  181. -*--------------------------------
  182. -COUNT  .BS 1
  183. -IOB    .HS 01
  184. -SLOT   .HS 60
  185. -DRIVE  .HS 01
  186. -VOL    .HS 00
  187. -TRACK  .HS 00
  188. -SECT   .HS 00
  189. -       .DA DCT
  190. -BUF    .BS 4
  191. -CMND   .HS 00
  192. -ERR    .HS 00006001
  193. -DCT    .HS 0001EFD8
  194. =lex
  195. -*
  196. -SAVELEX35.1,S6,D1
  197. -*--------------------------------
  198. -* LEXICAL ANALYSIS
  199. -*--------------------------------
  200. -EOL    .EQ $FF      SIGNALS END OF LETTER ENTRY
  201. -VP     .EQ 1        VERB REQUIRING PLACE: JUMP
  202. -VI     .EQ 2        VERB INTRANSITIVE
  203. -VT     .EQ 3        VERB TRANSITIVE
  204. -PRT    .EQ 4        VERB PART
  205. -PM     .EQ 5        PREP OF MOTION
  206. -PN     .EQ 6        PREP W/O MOTION
  207. -PLACE  .EQ 7        OUTSIDE,NORTH
  208. -NUM    .EQ 8
  209. -ADJ    .EQ 9
  210. -POS    .EQ 10       POSSESSIVE
  211. -PROPER .EQ 11
  212. -PRN    .EQ 12       SINGULAR PRONOUN
  213. -CN     .EQ 13       COMMON NOUN
  214. -CNP    .EQ 14       CREATED FROM CNs WITH S ON END
  215. -SYN1   .EQ 15       SYNONYM OF WORD# <256
  216. -SYN2   .EQ 16       SYN TO WORD#s >255
  217. -SYN3   .EQ 17
  218. -CONJ   .EQ 18
  219. -EXC    .EQ 19       EXCLUSIONARY: BUT,EXCEPT (FOR)
  220. -NEG    .EQ 20       NEGATION: NOT
  221. -RP     .EQ 21       RELATIVE PRONOUN: THAT,WHICH
  222. -PT     .EQ 22       PREP OF TIME
  223. -PI     .EQ 23       PREP OF INSTR: WITH,USING
  224. -TIME   .EQ 24       DUSK,DAWN
  225. -TB     .EQ 25       TIME BASIC: EARLY
  226. -CL     .EQ 26       TRANSFORMED AWAY
  227. -VA     .EQ 27       ACTION VERB
  228. -VO     .EQ 28       OPINION
  229. -NS     .EQ 29       SPOKEN NOUN
  230. -QW     .EQ 30       WHY,WHERE,WHO,WHAT,HOW
  231. -QUES   .EQ 31
  232. -* GENERIC PARTS (IE ANY VERB) DONE IN CONVERSATION
  233. -* USING SETS (IE SET OF VERB TYPES)
  234. -TALK   .EQ 32       USED ONLY AS CONVERSATION KEYWORD
  235. -CONT   .EQ 33       CONTRACTION
  236. -UNKW   .EQ 34       UNKNOWN
  237. -TRNS   .EQ 35       DROPPED DURING TRANSFORMATION: TOP,OF
  238. -VZ     .EQ 36       FAKE VERB FOR "GIVE/THROW DEST OBJ" TRANSFORM
  239. -*BE                 IS,ARE,ISN'T,ARN'T: TRANSFORMED
  240. -*--------------------------------
  241. -QBEG   .BS 1        CHAR# OF 1ST "
  242. -* THE FOLLOWING LINE IS NOT THE ENTRY POINT
  243. -* Y CONTAINS #CHARS-1 IN MATCHED WORD
  244. -* X POINTS TO CHAR BEYOND MATCH
  245. -MATCHD DEX          DON'T MISS SPACE AT END OF WORD IN NEXTWORD
  246. -       STX CURWORD  SO "GET UP", ETC., CAN BE 1 WORD
  247. -       TAX          SET ZFLAG
  248. -       BEQ M3       TYPE=0 MEANS SKIP/DELETE WORD
  249. -       PHA
  250. -       LDX WORDS
  251. -       LDA WNUM
  252. -       STA OLO,X    ORIG. WORD#
  253. -       LDA WNUM+1
  254. -       STA OHI,X
  255. -       PLA
  256. -       LDX #0       HIBYTE FOR GETWRD
  257. -       CMP #SYN1
  258. -       BEQ .0
  259. -       INX
  260. -       CMP #SYN2
  261. -       BEQ .0
  262. -       CMP #SYN3
  263. -       BNE .1
  264. -       INX
  265. -.0     JSR INY
  266. -       LDA (MISC),Y SYN WORD
  267. -       JSR GETWRD
  268. -.1     LDX WORDS
  269. -       STA WTYPE,X
  270. -       JSR GETNVNUM
  271. -       JSR INY
  272. -       LDA (MISC),Y
  273. -       BMI .5       NO 2ND TYPE
  274. -       STA WTYPE2,X
  275. -       JSR GETNVNUM
  276. -       JSR INY
  277. -       LDA (MISC),Y
  278. -       BMI .5       NO 3RD TYPE
  279. -       STA WTYPE3,X
  280. -       JSR GETNVNUM
  281. -.5     LDA WNUM
  282. -       STA WLO,X
  283. -       LDA WNUM+1
  284. -M1     STA WHI,X    JMPed TO BY GETNUM
  285. -M2     INC WORDS
  286. -M3     LDX CURWORD
  287. -       JMP NEXTWORD
  288. -PARSE  LDY #30*5+1 FOR LWORDS
  289. -.1     LDA WLO-1,Y  SAVE LAST WLO,WHI,WVRB,WNOUN,&WTFIN
  290. -       STA LWLO-1,Y FOR ELLIPSIS
  291. -       LDA #0
  292. -       STA WLO-1,Y  ERASE LEFTOVERS
  293. -       DEY
  294. -       BNE .1
  295. -       LDY #90
  296. -.2     STA WTYPE-1,Y
  297. -       DEY          CAN'T DO IT ADURING MATCHD SINCE UNK DON'T MATCH
  298. -       BNE .2
  299. -       STY ASTRIED  ASSUME HASN'T BEEN TRIED YET
  300. -ELOP   NOP          CHANGED TO DEY FOR NOEL
  301. -       STY ELTRIED  NEITHER HAS ELLIPSIS
  302. -P2     JSR INPUT
  303. -       LDA INSTRING
  304. -       BNE .4
  305. -* BLANK LINE
  306. -.3     LDA DQ
  307. -       BEQ P2       NOT IN QUOTE
  308. -       RTS          NO CHAR RESPONSE
  309. -.4     JSR CLBUF    CLEAN OUT INVALID CHARS
  310. -       JSR FD8E
  311. -       LDX #0
  312. -       STX WORDS
  313. -.5     LDA INSTRING,X 
  314. -       BEQ .3
  315. -       CMP #$A0
  316. -       BNE P1
  317. -       INX
  318. -       BNE .5
  319. -       BEQ .3
  320. -P0     LDA INSTRING,X
  321. -       BNE .1
  322. -       JMP LEXEND   COULD BEQ (BEQ LEXEND), BUT LOCAL LABELS INTERFERE
  323. -.1     CMP #$A0
  324. -       BNE P1
  325. -       INX
  326. -       BNE P0       FLUSH LEADING BLANKS
  327. -P1     STX CURWORD
  328. -       CMP #""
  329. -       BNE .5
  330. -       STX QBEG
  331. -.7     INX
  332. -       LDA INSTRING,X
  333. -       BEQ .6
  334. -       CMP #""
  335. -       BNE .7
  336. -.6     LDA #QM
  337. -       STA MISC
  338. -       LDA /QM
  339. -       STA MISC+1
  340. -       LDA #QNUM
  341. -       STA WNUM
  342. -       LDA /QNUM
  343. -       STA WNUM+1
  344. -       LDA #CN
  345. -       INX          DEX AT MATCHD
  346. -       LDY #0
  347. -       BEQ .13      MATCHD
  348. -.5     CMP #":      "9"+1
  349. -       BCS .54
  350. -       JMP GETNUM
  351. -.54    SBC #"A
  352. -       CMP #"Z-"A+1
  353. -       BCC .4
  354. -.14    JMP DUNNO
  355. -.4     ASL
  356. -       TAY
  357. -       LDA TABFL,Y
  358. -       STA MISC
  359. -       LDA TABFL+1,Y
  360. -       STA MISC+1
  361. -       DEC MISC+1
  362. -       LDA NUMTAB,Y  WORD#
  363. -       STA WNUM
  364. -       LDA NUMTAB+1,Y
  365. -       STA WNUM+1
  366. -       LDY #$FF
  367. -.1     INX
  368. -       BEQ LEXEND   FINISHED WITH STRING
  369. -       JSR INY
  370. -       LDA (MISC),Y
  371. -       BMI .15
  372. -.13    JMP MATCHD   TYPE SIGNALS END OF LETTER
  373. -.15    CMP #EOL     END OF LETTER
  374. -       BEQ .14      BEQ DUNNO
  375. -       CMP INSTRING,X
  376. -       BEQ .1       MATCH, GO ON FOR NEXT CHAR
  377. -.2     JSR INY
  378. -       LDA (MISC),Y SEARCH FOR END OF STRING
  379. -       BMI .2
  380. -.23    BEQ .25      IGNORE
  381. -       CMP #SYN3+1
  382. -       BCS .25
  383. -       JSR INY      PARTS <= SYN HAVE 1 PARAM
  384. -.25    JSR INY      SEARCH FOR NEXT STRING
  385. -       LDA (MISC),Y
  386. -       BPL .23
  387. -       CMP #EOL
  388. -       BEQ DUNNO    NO MORE STRINGS FOR THAT LETTER
  389. -       INC WNUM
  390. -       BNE .3
  391. -       INC WNUM+1
  392. -.3     LDX CURWORD  START THIS WORD OVER
  393. -       DEY
  394. -       BNE .1
  395. -       DEC MISC+1
  396. -       BNE .1
  397. -LEXEND JMP TRANSFORM
  398. -* CLEAN BUFFER OF INVALID CHARS
  399. -CLBUF  LDX #0
  400. -.1     LDA INSTRING,X
  401. -       BEQ .4       EOS
  402. -       CMP #"?
  403. -       BNE .15
  404. -       LDA #$88
  405. -       STA QMARK
  406. -       BNE .2       ERASE ? BUT MARK QMARK
  407. -.15    CMP #"A
  408. -       BCS .3       LETTER
  409. -       CMP #"9+1
  410. -       BCS .2       INVALID
  411. -       CMP #"0
  412. -       BCS .3       NUMBER
  413. -       CMP #""
  414. -       BEQ .3
  415. -       CMP #"'
  416. -       BEQ .3
  417. -       CMP #$A1
  418. -       BCC .3       SPACE OR CONTROL CHAR OR 0
  419. -.2     LDA #$A0
  420. -       STA INSTRING,X  REPLACE INVALID WI SPACE
  421. -.3     INX
  422. -       BNE .1
  423. -.4     RTS
  424. -*--------------------------------
  425. -NEXTWORD LDA INSTRING,X
  426. -       BEQ LEXEND   0 FLAGS END OF INPUT
  427. -       INX
  428. -       BEQ LEXEND
  429. -       CMP #$A0     SPACE
  430. -       BNE NEXTWORD
  431. -       JMP P0
  432. -*--------------------------------
  433. -DUNNO  LDA ACUNK
  434. -       BEQ .5       DON'T ACCEPT UNK
  435. -       LDX WORDS
  436. -       LDA #UNKW
  437. -       STA WTYPE,X
  438. -       LDA #0
  439. -       STA OLO,X    DON'T CHANGE UNKNOWN WORD TO YOU/ME,AM/ARE, ETC.
  440. -       STA OHI,X
  441. -       JMP M2
  442. -.5     LDY /.9
  443. -       LDA #.9
  444. -       JSR PS
  445. -       JMP PARSE
  446. -.6     STY $24
  447. -       LDX CURWORD
  448. -.7     LDA INSTRING,X
  449. -       CMP #$A0
  450. -       BEQ .8
  451. -       JSR FDF0
  452. -       INX
  453. -       BNE .7
  454. -.8     LDY $24
  455. -       RTS
  456. -.9     .US /I DON'T KNOW THE WORD "+/
  457. -       .DA .6
  458. -       .US /".@=/
  459. -*--------------------------------
  460. -GETNUM CMP #"1
  461. -       BCC DUNNO
  462. -       LDA #0
  463. -       STA $44
  464. -       STA $45
  465. -       JSR .2
  466. -       LDA $44      NUM
  467. -       LDX WORDS
  468. -       STA WNOUN,X
  469. -       LDA #NUM
  470. -       STA WTYPE,X
  471. -       LDA #0
  472. -       STA WTYPE2,X
  473. -       STA WTYPE3,X
  474. -       LDA #$FF     AVOID CONFUSION
  475. -       JMP M1       NEXTWORD
  476. -* DOS DECIMAL INPUT & TRANSLATE
  477. -* ON ENTRY TO .2:X=INPUT POINTER
  478. -.1     LDX .9
  479. -.2     LDA INSTRING,X
  480. -       CMP #$8D
  481. -       BEQ .8
  482. -       CMP #$A0
  483. -       BEQ .8
  484. -       INX
  485. -       STX .9
  486. -.5     SEC
  487. -       SBC #$B0     #"1 -> #1
  488. -       BMI .6       <0
  489. -       CMP #$A
  490. -       BCS .7       >9
  491. -       ASL $44
  492. -       ROL $45
  493. -       ADC $44
  494. -       TAX
  495. -       LDA #0
  496. -       ADC $45
  497. -       TAY
  498. -       ASL $44
  499. -       ROL $45
  500. -       ASL $44
  501. -       ROL $45
  502. -       TXA
  503. -       ADC $44
  504. -       STA $44
  505. -       TYA
  506. -       ADC $45
  507. -       STA $45
  508. -       BCC .1
  509. -.6     SEC
  510. -.7     RTS
  511. -.8     LDX $44
  512. -       LDA $45
  513. -       CLC
  514. -       RTS
  515. -.9     .BS 1        TEMP X
  516. -*--------------------------------
  517. -GETNVNUM CMP #PRT+1 VERB OR PART?
  518. -       BCS .1
  519. -       JSR INY
  520. -       LDA (MISC),Y
  521. -       STA WVERB,X
  522. -.0     RTS
  523. -.1     CMP #SYN1    NOUN,ADJ,PM,PN,POS,PLACE?
  524. -       BCS .0
  525. -       JSR INY
  526. -       LDA (MISC),Y
  527. -       STA WNOUN,X
  528. -       STX TEMP
  529. -       LDX CURWORD
  530. -.2     LDA INSTRING,X
  531. -       BEQ .3
  532. -       INX
  533. -       BEQ .3
  534. -       CMP #$A0
  535. -       BNE .2
  536. -       DEX
  537. -       LDA INSTRING,X
  538. -       CMP #"S      LAST LETTER OF WORD
  539. -       BNE .3
  540. -       LDX TEMP
  541. -       LDA WTYPE,X
  542. -       CMP #CN
  543. -       BNE .25
  544. -       LDA #CNP     PLURAL
  545. -       STA WTYPE,X
  546. -       RTS
  547. -.25    LDA WTYPE2,X
  548. -       CMP #CN
  549. -       BNE .3       CN MUST BE 1 OF 1ST 2 TYPES
  550. -       LDA #CNP
  551. -       STA WTYPE2,X
  552. -.3     LDX TEMP
  553. -       RTS
  554. -*--------------------------------
  555. -INY    INY
  556. -       BNE .1
  557. -       INC MISC+1
  558. -.1     RTS
  559. -*--------------------------------
  560. -* FIND LOCATION OF WORD# X,A
  561. -* INFINITE LOOP MAY RESULT IF W#=0
  562. -GETWRD STA WNUM
  563. -       STX WNUM+1
  564. -       LDY #26*2    # OF LETTERS *2
  565. -.1     DEY
  566. -       DEY
  567. -       CLC          SUB 1 MORE TO TST FOR =<, NOT <
  568. -       LDA NUMTAB,Y      LOBYTE
  569. -       SBC WNUM          LOBYTE TO FIND
  570. -       EOR #$FF     A<=(SEC:LDA WNUM:SBC NUMTAB,Y) DOESN'T CHANGE C
  571. -       TAX
  572. -       LDA NUMTAB+1,Y    HIBYTE
  573. -       SBC WNUM+1
  574. -       BCS .1
  575. -       LDA TABFL,Y
  576. -       STA MISC
  577. -       LDA TABFL+1,Y
  578. -       STA MISC+1
  579. -       LDY #0
  580. -       TXA          DIF TWIXT 1ST WORD# AND WORD# DESIRED
  581. -       BEQ .3
  582. -.2     JSR INY
  583. -       LDA (MISC),Y SEARCH FOR END OF STRING
  584. -       BMI .2
  585. -.23    BEQ .25      IGNORE
  586. -       CMP #SYN3+1
  587. -       BCS .25
  588. -       JSR INY      PARTS <= SYN HAVE 1 PARAM
  589. -.25    JSR INY      SEARCH FOR NEXT STRING
  590. -       LDA (MISC),Y
  591. -       BPL .23
  592. -       DEX
  593. -       BNE .2
  594. -.3     JSR INY      SKIPS 1ST LETTER OF MATCH, BUT THAT'S OK
  595. -       LDA (MISC),Y
  596. -       BMI .3
  597. -GETEND RTS
  598. =macros
  599. -* LISTS
  600. -       .MA CRV LIST
  601. -       LDA ]1
  602. -       JSR CRVAR
  603. -       .EM
  604. -       .MA CRL LIST,LEN  CREATE LIST
  605. -       >CRV ]1
  606. -       LDA ]2       LENGTH
  607. -       JSR CRL
  608. -       .EM
  609. -       .MA FIN      LIST,ELEMENT
  610. -       LDA ]1
  611. -       LDX ]2
  612. -       JSR FINEL
  613. -       .EM
  614. -       .MA NXT      LIST
  615. -       LDA ]1
  616. -       JSR LLL
  617. -       DEY          Y<=#$FE
  618. -       LDA (TEMP),Y PTR
  619. -       TAY
  620. -       LDA (TEMP),Y NEXT EL
  621. -       PHA
  622. -       INY          INC PTR
  623. -       TYA
  624. -       LDY $#FE     PTR
  625. -       STA (TEMP),Y
  626. -       PLA
  627. -       .EM
  628. -* STACKS: PNTR POINTS TO NEXT FREE BYTE
  629. -       .MA PHA      STACK,PNTR
  630. -       LDY ]2
  631. -       INC ]2
  632. -       STA ]1,Y
  633. -       .EM
  634. -       .MA PHB      DATA,STACK,POINTER
  635. -       LDA ]1
  636. -       >PHA ]2,]3
  637. -       .EM
  638. -       .MA PLA      STACK,PNT
  639. -       DEC ]2
  640. -       LDY ]2
  641. -       LDA ]1,Y
  642. -       .EM
  643. -* PUSH WORD: POINTER POINTS TO LOW BYTE, PUSHED BEFORE HIGH BYTE
  644. -       .MA PSHW     DATA,STACK,POINTER,MAX
  645. -       LDY ]3
  646. -       .DO ]#=4
  647. -       CPY ]4
  648. -       BCC :1
  649. -       RTS
  650. -       .FIN
  651. -:1     LDA ]1
  652. -       STA ]2,Y
  653. -       LDA ]1+1
  654. -       STA ]2+1,Y
  655. -       INY
  656. -       INY
  657. -       STY ]3
  658. -       .EM
  659. -       .MA PLLW     DEST,STACK,POINTER
  660. -       LDY ]3
  661. -       DEY
  662. -       DEY
  663. -       LDA ]2,Y
  664. -       STA ]1
  665. -       LDA ]2+1,Y
  666. -       STA ]1+1
  667. -       STY ]3
  668. -       .EM
  669. =monitor2
  670. -*
  671. -SAVE MONITOR2
  672. -* MONITOR ROUTINES
  673. -BASIC  STA $C082
  674. -       JMP $E000
  675. -RESET  STA $C082
  676. -       JMP $FA62
  677. -FB2F   STA $C081
  678. -       JSR $FB2F
  679. -WRAM   PHA
  680. -       LDA $C083
  681. -       LDA $C083
  682. -       PLA
  683. -       RTS
  684. -FBB3   STA $C081
  685. -       LDA $FBB3
  686. -       JMP WRAM
  687. -FBDD   STA $C081
  688. -       JSR $FBDD
  689. -       JMP WRAM
  690. -FC1A   STA $C081
  691. -       JSR $FC1A
  692. -       JMP WRAM
  693. -FC22   STA $C081
  694. -       JSR $FC22
  695. -       JMP WRAM
  696. -FC58   STA $C081
  697. -       JSR $FC58
  698. -       JMP WRAM
  699. -FC9E   STA $C081
  700. -       JSR $FC9E
  701. -       JMP WRAM
  702. -FD8E   STA $C081
  703. -       JSR $FD8E
  704. -       JMP WRAM
  705. -FDDA   STA $C081
  706. -       JSR $FDDA
  707. -       JMP WRAM
  708. -FDF0   STA $C081
  709. -       JSR $FDED
  710. -       JMP WRAM
  711. -FE2C   STA $C081
  712. -       JSR $FE2C
  713. -       JMP WRAM
  714. -NODOS  STA $C081
  715. -       JSR $FE89
  716. -       JSR $FE93
  717. -       JMP WRAM
  718. -FF3F   STA $C081
  719. -       JSR $FF3F
  720. -       JMP WRAM
  721. -FF4A   STA $C081
  722. -       JSR $FF4A
  723. -       JMP WRAM
  724. =print22
  725. -*
  726. -SAVEPRINT22
  727. -* RESERVED FOR PRINT:
  728. -*      $10          OBJ TO PRINT
  729. -*      $11          TEMP STORAGE
  730. -*      $1A,1B       POINTER TO STRING
  731. -*--------------------------------
  732. -* PRINT FROM TABLES
  733. -* A=MESSAGE#
  734. -* MTYP: RPL:0,2,4,6,8,10 ADJ:12 OBJ:14 LOC:16 MSG:18 MTN:20,22,24,26,28,30
  735. -MTYP   .BS 1
  736. -* $A,B RESERVED FOR THIS ONLY
  737. -PINY   INY
  738. -       BNE .1
  739. -       INC $B
  740. -.1     RTS
  741. -ROTC   .BS 1        RESERVE OFFICER TRAINING CORPS
  742. -ROT    STY $B
  743. -       DEC $B
  744. -       STA ROTC
  745. -       LDY #$FF
  746. -.1     DEC ROTC
  747. -       BMI .3
  748. -       JSR PINY
  749. -       JSR PINY     DON'T NEED TO CHECK POINTER 
  750. -       JSR PINY     OR 1ST 2 MSGS
  751. -.2     JSR PINY
  752. -       LDA ($A),Y
  753. -       CMP #$FF
  754. -       BNE .2
  755. -       BEQ .1
  756. -.3     JSR PINY
  757. -       STY ROTC
  758. -       LDA ($A),Y   PNTR
  759. -.4     CLC
  760. -       ADC #1       INC PNTR
  761. -       STA ($A),Y
  762. -       ADC ROTC     A=Y+NEW POINTER
  763. -       TAY
  764. -       LDA ($A),Y   MSG# TO PRINT
  765. -       CMP #$FF     GONE PAST END OF MSG LIST?
  766. -       BNE .6       NO
  767. -       LDY ROTC     POINT TO PNTR
  768. -       LDA #0       & START OVER WI 1ST MSG#
  769. -       BEQ .4
  770. -* GO BACK IN CASE STRTAB INCLUDES A STRTAB
  771. -.6     PHA
  772. -       CPX #11
  773. -       BCC PRPL2
  774. -       PLA
  775. -       CPX #18
  776. -       BEQ APMSG
  777. -       CPX #20
  778. -       BCS PMTN
  779. -       BCC PML
  780. -PMSG   LDY ACLOC
  781. -       CPY LOC
  782. -       BEQ APMSG    PMSG IF ACTOR & PLAYER IN SAME ROOM
  783. -PMRTS  RTS
  784. -APMSG  LDX #18
  785. -       CMP #RMSG    MASTER MESSAGE WHICH ROTATES THRU STRINGS?
  786. -       BCC PML      NO
  787. -       SBC #RMSG
  788. -       LDY #RMSGS
  789. -       STY $A
  790. -       LDY /RMSGS
  791. -BNEROT BNE ROT
  792. -PRPL   PHA
  793. -       LDA #""
  794. -       JSR FDF0
  795. -PRPL2  LDA CHRNUM
  796. -       TAY
  797. -       ASL          A=A*2
  798. -       TAX
  799. -       PLA
  800. -       CMP .5,Y
  801. -       BCC PML
  802. -       SBC .5,Y
  803. -       LDY .7,X
  804. -       STY $A
  805. -       LDY .7+1,X
  806. -       BNE BNEROT   ALWAYS
  807. -.5     .DA #EDRPL,#LIBRPL,#MRKRPL,#MRSRPL,#INTRPL,#PRORPL
  808. -.7     .DA EDRPLS,LIBRPLS,MRKRPLS,MRSRPLS,INTRPLS,PRORPLS
  809. -PMTN   PHA
  810. -       LDA CHRNUM
  811. -       ASL
  812. -       ADC #20      C=0
  813. -       TAX
  814. -       PLA
  815. -       CMP #RMTN
  816. -       BCC PML
  817. -       SBC #RMTN
  818. -       LDY #RMTNS
  819. -       STY $A
  820. -       LDY /RMTNS
  821. -       BNE BNEROT
  822. -PLOC   LDX #16
  823. -PML    JSR POBJ+2
  824. -       LDA MTYP
  825. -       CMP #20
  826. -       BCS PMRTS    MTN: RTS
  827. -       CMP #12      ADJ
  828. -       BCS .1       NOT RPL
  829. -       LDA #""
  830. -       JSR FDF0
  831. -.1     JMP FD8E
  832. -PADJ   LDX #12
  833. -       .HS 2C
  834. -POBJ   LDX #14
  835. -       TAY          0?
  836. -       BNE .0
  837. -       CPX #12      RPL?
  838. -       BCS .0       NO
  839. -* PACK IS DESIGNED SO EACH SUCCESSIVE TABLE OF STRINGS
  840. -* IS STORED SEQUENTIALLY AFTER THE LAST.
  841. -* BUT THE SWAPPING TO DISK OF REPLIES MEANS THEY'RE NOT.
  842. -* SO REPLY #0 IN EACH TABLE HAS THE ADDRESS OF THE LAST REPLY
  843. -* OF THE LAST TABLE (I THINK).
  844. -* BUT EVERY REPLY #0 ACTUALLY STARTS AT TABTAB+$30
  845. -       LDA #FINAL
  846. -       LDY /FINAL
  847. -       BNE .3
  848. -.0     LDY #0
  849. -       ASL          A=A*2
  850. -       BCC .1
  851. -       INY          BIT 7 =>BIT 8
  852. -.1     STA EDGE
  853. -       STY EDGE+1
  854. -       SEC
  855. -       LDA TABTAB,X
  856. -       SBC EDGE
  857. -       STA EDGE
  858. -       LDA TABTAB+1,X
  859. -       SBC EDGE+1
  860. -       STA EDGE+1
  861. -       LDY #0
  862. -       LDA (EDGE),Y
  863. -       PHA
  864. -       INY
  865. -       LDA (EDGE),Y
  866. -       TAY
  867. -       PLA
  868. -.3     STX MTYP
  869. -       CPX #12      ADJ
  870. -       BCC PS
  871. -       CPX #16      LOC
  872. -       BCC PRINT    ADJ, OBJ DON'T START WI CAPITAL
  873. -*--------------------------------
  874. -* PRINT STRING POINTED TO BY Y,A AND TERMINATED BY 00
  875. -* BUG:IF CHARS PRINTED BY +,/, OR $ WRAP AROUND, BACKUP WILL BE WRONG
  876. -*--------------------------------
  877. -PS     LDX #2
  878. -       STX SHIFT    START SENT WI CAPITAL
  879. -PRINT  STA $1A
  880. -       STY $1B
  881. -       STA SSTART   SAVE SO WE KNOW DURING WRAPAROUND TRACKBACK
  882. -       STY SSTART+1 WHEN WE'VE COME TO THE BEGINNING OF THE STRING
  883. -       LDA WTOP
  884. -       STA LINCNT
  885. -* SOME ROUTINES, IE PRCONT, PRINT A LOT OF STRINGS
  886. -* NONE OF WHICH SHOULD START IN COLUMN 0. THEY SET C1=1.
  887. -       LDY $24    
  888. -       BNE P4
  889. -       LDY C1       0 OR 1
  890. -P4     LDA #0       MARK STACK
  891. -       PHA          SO COUT WILL RETURN TO CALLER OF PRINT
  892. -       PHA          WHEN IT FINDS A =
  893. -P6     LDX #1       FOR LOWERCASE
  894. -       LDA ($19,X)  GET NEXT CHAR
  895. -       CMP #"@      CR
  896. -       BNE .6
  897. -       JMP PCR
  898. -.6     CMP #$A0
  899. -       BCC .60      DIGRAM
  900. -       CMP #"Z+1
  901. -       BCS .57      WORD
  902. -.11    CMP #"+      JSR
  903. -       BEQ .65
  904. -       CMP #"/      NUMBER
  905. -       BNE .13
  906. -.61    JSR PRDEC
  907. -       JMP P54
  908. -.13    CMP #"$      STRING
  909. -       BNE .20
  910. -       JMP PSTR
  911. -.20    CMP #"*      LOWERCASE
  912. -       BNE .21
  913. -       STX SHIFT
  914. -       JMP P54
  915. -.21    CMP #"<      A/AN/_
  916. -       BNE .22
  917. -       JSR PA
  918. -       JMP P54
  919. -.22    CMP #">      THE/_
  920. -       BNE .23
  921. -       JSR PTHE
  922. -       JMP P54
  923. -.23    JMP .14
  924. -* DIGRAM
  925. -.60    STA $FF
  926. -       TAX
  927. -       LDA #0       SHOWS WRAPAROUND IF 1ST OR 2ND LETTER PRINTED
  928. -       STA $19      0=1ST LETTER
  929. -       LDA DIG1,X
  930. -       JSR COUT
  931. -       LDA $FF
  932. -       TAX
  933. -       INC $19      1=2ND LETTER
  934. -       LDA DIG2,X
  935. -.14    JSR COUT
  936. -       JMP P54
  937. -* WORD
  938. -.57    TAX
  939. -       LDA WRDTAB-"Z-1,X
  940. -       TAX
  941. -.58    LDA WRDTXT,X
  942. -       STX $19      ALSO NEED FOR WRAPAROUND
  943. -       BMI .14
  944. -       CMP #$20     LEADING SPACE
  945. -       BNE .59
  946. -       CPY #1
  947. -       BNE .59
  948. -       LDX LINCNT
  949. -       CPX WTOP
  950. -       BNE .55      NOT 1ST LINE; DON'T PRINT SPACE IN COLUMN 1
  951. -.59    ORA #$80
  952. -       JSR COUT
  953. -.55    LDX $19
  954. -       INX
  955. -       BNE .58      ALWAYS, AS LONG AS WORDS<257 BYTES
  956. -* JSR
  957. -.65    LDX #0
  958. -       JSR PINC
  959. -       LDA ($1A,X)
  960. -       STA .67+1
  961. -       JSR PINC
  962. -       LDA ($1A,X)
  963. -       STA .67+2
  964. -.67    JSR 0
  965. -       JMP P54
  966. -PCR    JSR RETBLN
  967. -       DEY          0
  968. -P54    JSR PINC
  969. -       JMP P6
  970. -* PRINT ANOTHER STRING INSIDE THIS ONE
  971. -PSTR   JSR PINC
  972. -       LDX #0
  973. -       LDA ($1A,X)
  974. -       PHA
  975. -       JSR PINC
  976. -       LDA ($1A,X)
  977. -       PHA
  978. -       JSR PSS
  979. -       PLA
  980. -       STA $1B
  981. -       PLA
  982. -       STA $1A
  983. -       JSR P4
  984. -       JSR PLS
  985. -       JMP P54
  986. -PINC   INC $1A
  987. -       BNE .75
  988. -       INC $1B
  989. -.75    RTS
  990. -COUT   CMP #"=      EOL
  991. -       BNE .5
  992. -.2     PLA          DON'T NEED TO RESTORE SAVED STACK POINTER
  993. -       BNE .2
  994. -       PLA          BECAUSE = IS NEVER 1ST LETTER IN DIGRAM
  995. -       BNE .2       KEEP PULLING UNTIL 00 00 MARK COMES UP
  996. -       CPY #$28     DON'T LET FDF0 PRINT OFFSCREEN
  997. -       BCC .3
  998. -       JSR RETBLN
  999. -.3     STY $24    
  1000. -       LDA #1
  1001. -       STA SHIFT
  1002. -       RTS        
  1003. -.5     LDX #2
  1004. -       CMP #"%      SETSHIFT
  1005. -       BNE .8
  1006. -       STX SHIFT
  1007. -       RTS
  1008. -.8     CMP #".
  1009. -       BEQ .9
  1010. -       CMP #"!
  1011. -       BEQ .9
  1012. -       CMP #"?
  1013. -       BNE .11
  1014. -.9     STX SHIFT
  1015. -.11    CMP #"A
  1016. -       BCC .12
  1017. -       DEC SHIFT
  1018. -       BPL .10      DON'T LOOP THRU ALL VALUES
  1019. -       INC SHIFT
  1020. -.10    LDX LWC
  1021. -       BEQ .12
  1022. -       LDX SHIFT
  1023. -       BNE .12
  1024. -       ADC #$1F     =>LOWERCASE
  1025. -.12    CPY LSTCOL   EOL = $27
  1026. -       BCS .80
  1027. -       STA ($28),Y
  1028. -       INY        
  1029. -       RTS
  1030. -.80    CMP #$A0
  1031. -       BNE .81
  1032. -       JMP RETBLN
  1033. -.81    JSR .73      SHIFTED?
  1034. -       JMP .87
  1035. -.85    LDX #$FF
  1036. -       STX $19      SHOW WE'RE NOT IN THE MIDDLE OF ANYTHING
  1037. -       DEY
  1038. -.87    LDX #0
  1039. -       LDA ($1A,X)  BYTE PRINTED
  1040. -       CMP #"Z+1
  1041. -       BCC .30
  1042. -* WORD
  1043. -       TAX
  1044. -       SEC
  1045. -       LDA #$FE     $FF=ENTIRE WORD WAS PRINTED
  1046. -       CMP $19      INDEX SAVED BY WORD PRINTER
  1047. -       LDA $19
  1048. -       BCS .15
  1049. -       LDA WRDTAB-"Z,X
  1050. -* C=0 SO SBCs 1 MORE
  1051. -.15    SBC WRDTAB-"Z-1,X DEY (SAVED-START) TIMES
  1052. -       TAX
  1053. -       BEQ .50      NO CHARS PRINTED
  1054. -.20    DEX
  1055. -       BMI .25      WON'T LDA FROM OFFSCREEN 'CAUSE WON'T BMI 1ST TIME
  1056. -       DEY
  1057. -       STX $19
  1058. -       JSR .70      CHECK FOR CAP
  1059. -       LDX $19
  1060. -       JMP .20
  1061. -.25    JSR .70      ONLY 1ST LETTER IN WORD CAN BE SPACE
  1062. -       BNE .50
  1063. -       JMP .95
  1064. -.30    CMP #$A0
  1065. -       BCS .48      CHAR
  1066. -* DIGRAM: ONLY 1ST LETTER CAN BE SPACE & ONLY IF DIGRAM<22
  1067. -       LDX $19
  1068. -       BEQ .45      1ST CHAR OF UNPRINTED DIGRAM
  1069. -       DEX
  1070. -       BEQ .46      2ND CHAR NOT PRINTED
  1071. -       PHA
  1072. -       JSR .70      CHECK CAP
  1073. -       PLA
  1074. -.46    DEY          2 CHARS/BYTE
  1075. -.45    CMP #22
  1076. -       BCS .47
  1077. -       INY
  1078. -       JSR BLANK
  1079. -       JSR RETBLN
  1080. -       DEY          Y=0 SINCE 1ST CHAR OF DIGRAM IS BLANK
  1081. -       JMP P97
  1082. -.47    JSR .70      CHECK CAP
  1083. -       JMP .50
  1084. -.48    CPY LSTCOL
  1085. -       BCS .50
  1086. -       JSR .70
  1087. -       BEQ .90
  1088. -.50    LDA $1A
  1089. -       CMP SSTART
  1090. -       BNE .51
  1091. -       LDA $1B
  1092. -       CMP SSTART+1
  1093. -       BEQ .95      START OF STRING
  1094. -.51    TAX
  1095. -       BNE .55
  1096. -       DEC $1B
  1097. -.55    DEC $1A      MOVE BACK TO LAST CHARACTER
  1098. -       JMP .85
  1099. -* CHECK FOR SPACE OR COMMA
  1100. -.70    LDA ($28),Y  READ FROM SCREEN
  1101. -.73    CMP #$A0
  1102. -       BEQ .77
  1103. -       CMP #",
  1104. -       BEQ .77
  1105. -       LDX #0       DEFAULT:THIS LETTER NOT CAPITAL
  1106. -       CMP #"Z+1
  1107. -       BCS .76
  1108. -       CMP #"A
  1109. -       BCC .76
  1110. -       LDX #2
  1111. -.76    STX SHIFT   1ST LETTER AFTER SPACE WAS CAPITAL
  1112. -       LDX #2       IN CASE A=Z+1
  1113. -.77    RTS          NOTE ENDLESS LOOP IF NO SPACES OR COMMAS
  1114. -.90    INY
  1115. -.95    JSR BLANK
  1116. -       JSR RETBLN
  1117. -P97    PLA
  1118. -       BNE P97
  1119. -       PLA
  1120. -       BNE P97
  1121. -       JMP P4
  1122. -RETBLN JSR FD8E
  1123. -       INC LINCNT
  1124. -       LDA LINCNT
  1125. -       CMP #23      TO BOTTOM OF SCREEN?
  1126. -       BNE .2
  1127. -       JSR MORE
  1128. -       LDA WTOP
  1129. -       STA LINCNT
  1130. -.2     LDA #$A0
  1131. -       LDY #0
  1132. -       STA ($28),Y  ERASE SPACE IN COLUMN 0
  1133. -       INY
  1134. -       RTS
  1135. -MORE   LDX #5
  1136. -       LDY #17
  1137. -       STY $24
  1138. -.1     TXA
  1139. -       PHA
  1140. -       LDA M4,X
  1141. -       JSR COUT
  1142. -       PLA
  1143. -       TAX
  1144. -       DEX
  1145. -       BPL .1
  1146. -       STA $C010
  1147. -.4     BIT $C000
  1148. -       BPL .4       WAIT FOR KEYPRESS
  1149. -       STA $C010
  1150. -       LDY #0
  1151. -       STY $24
  1152. -BLANK  LDA #$A0
  1153. -       BNE .2       ALWAYS
  1154. -.1     STA ($28),Y  FILL TO EOL WI BLANKS
  1155. -       INY
  1156. -.2     CPY #$28
  1157. -       BCC .1
  1158. -       RTS
  1159. -M4     .HS 2905120F0D28
  1160. -C1     .BS 1
  1161. -SSTART .BS 2
  1162. -SHIFT  .BS 1        2=CAP NEXT LETTER
  1163. -LSTCOL .HS 28       LAST COLUMN+1 WHICH PRINT WILL PRINT IN
  1164. -LINCNT .BS 1        LINE PRINTING ON:USED TO DETECT SCREEN OVERFLOW
  1165. -PPNT   .BS 1        POINTER INTO PSTACK
  1166. -PSTACK .BS 5
  1167. -PSTACK2 .BS 5
  1168. -DIG1   .AS -/                /
  1169. -       .AS -/       ''.?AAAAA/
  1170. -       .AS -/AAAAAAAABBBBCCCC/
  1171. -       .AS -/CDDDDEEEEEEEEEEE/
  1172. -       .AS -/FFFGGGHHHHIIIIII/
  1173. -       .AS -/IIIIIKKLLLLLLLMM/
  1174. -       .AS -/MNNNNNNNOOOOOOOO/
  1175. -       .AS -/OPPPRRRRRRRRRRSS/
  1176. -       .AS -/SSSSSSTTTTTTTTUU/
  1177. -       .AS -/UUUUUVWWWWWWYYYY/
  1178. -DIG2   .AS -/"=ABCDEFGHIKLMNO/
  1179. -       .AS -/PRSTUWYST==BCDGI/
  1180. -       .AS -/LMNPRSTYAEORAEHK/
  1181. -       .AS -/O.EIO.ACDELMNRST/
  1182. -       .AS -/EIOAEHAEIOCDEGLM/
  1183. -       .AS -/NORSTESADEILOYAE/
  1184. -       .AS -/I'DEGOSTFKMNORTU/
  1185. -       .AS -/WAER.ADEIORSTY.A/
  1186. -       .AS -/EHIOST.AEHIORT'A/
  1187. -       .AS -/LNRSTEAEHINO.EOS/
  1188. -WRDTXT .EQ *+38
  1189. -WRDTAB .DA #0,#.2-.1,#.3-.1,#.4-.1,#.5-.1,#.6-.1,#.7-.1,#.8-.1,#.9-.1,#.10-.1,#.11-.1,#.12-.1,#.13-.1
  1190. -       .DA #.14-.1,#.15-.1,#.16-.1,#.17-.1,#.18-.1,#.19-.1,#.20-.1,#.21-.1,#.22-.1,#.23-.1,#.24-.1,#.25-.1,#.26-.1,#.27-.1
  1191. -       .DA #.28-.1,#.29-.1,#.30-.1,#.31-.1,#.32-.1,#.33-.1,#.34-.1,#.35-.1,#.36-.1,#.37-.1,#.38-.1
  1192. -.1     .AT / NORTH/
  1193. -.2     .AT / WEST/
  1194. -.3     .AT / SOUTH/
  1195. -.4     .AT / EAST/
  1196. -.5     .AT / UP/
  1197. -.6     .AT / DOWN/
  1198. -.7     .AT / AND /
  1199. -.8     .AT / BOOK/
  1200. -.9     .AT / CAN'T /
  1201. -.10    .AT / DON'T /
  1202. -.11    .AT / IN /
  1203. -.12    .AT / IS /
  1204. -.13    .AT / IT/
  1205. -.14    .AT / NOT/
  1206. -.15    .AT / REMEMBER/
  1207. -.16    .AT / STAIR/
  1208. -.17    .AT / THAT/
  1209. -.18    .AT / THE /
  1210. -.19    .AT / THE/
  1211. -.20    .AT / WITH/
  1212. -.21    .AT /YOU'RE/
  1213. -.22    .AT / YOU /
  1214. -.23    .AT / YOU/
  1215. -.24    .AT / YOUR /
  1216. -.25    .AT /DO /
  1217. -.26    .AT /E TO /
  1218. -.27    .AT /ED /
  1219. -.28    .AT /HAVE /
  1220. -.29    .AT /HERE/
  1221. -.30    .AT /IGHT/
  1222. -.31    .AT /ING /
  1223. -.32    .AT /ING/
  1224. -.33    .AT /PERHAPS/
  1225. -.34    .AT /RE /
  1226. -.35    .AT /THIS /
  1227. -.36    .AT /TION/
  1228. -.37    .AT /YOU/
  1229. -.38
  1230. -       STA $10
  1231. -* OBJ IN $10
  1232. -PA     JSR GNT
  1233. -       BNE PAT      NOT CN
  1234. -       LDA #"A
  1235. -       JSR COUT
  1236. -       LDX #$FF
  1237. -.1     INX
  1238. -       LDA ANTAB,X
  1239. -       BEQ .2       A,NOT AN
  1240. -       CMP $10
  1241. -       BNE .1
  1242. -       LDA #"N
  1243. -       JSR COUT
  1244. -.2     LDA #" "
  1245. -       JSR COUT
  1246. -PAT    STY $24
  1247. -       LDA $1A
  1248. -       PHA
  1249. -       LDA $1B
  1250. -       PHA
  1251. -       LDA $10
  1252. -       JSR POBJ
  1253. -       PLA
  1254. -       STA $1B
  1255. -       PLA
  1256. -       STA $1A
  1257. -       RTS
  1258. -PTHE   JSR GNT
  1259. -       EOR #6
  1260. -       BEQ PAT      PROPER NOUN
  1261. -*PRINT THE
  1262. -       LDX #3
  1263. -.1     LDA .2,X
  1264. -       STX MISC
  1265. -       JSR COUT
  1266. -       LDX MISC
  1267. -       DEX
  1268. -       BPL .1
  1269. -       BMI PAT
  1270. -.2     .AS -/ EHT/
  1271. -GNT    LDA $10
  1272. -       STY $11
  1273. -       JSR PNTOBJ
  1274. -       LDY #5
  1275. -       LDA (MISC),Y
  1276. -       LDY $11
  1277. -       AND #6
  1278. -       RTS
  1279. -ANTAB  .DA #OFFI,#ALL,#ARR,#CAP,ID
  1280. -* PRINT $50,51 IN DECIMAL
  1281. -* HEX-TO-DEC BY LONG DIVISION
  1282. -* FIND DIGITS IN REVERSE ORDER BY REPEATEDLY DIVIDING BY 10
  1283. -* IN ORDER TO SHIFT QUOTIENT BIT INTO $50 WHILE SHIFTING DIVIDEND OUT,
  1284. -* WE ROTATE AFTER THE COMPARE. THUS WE MUST COMPARE TO 10/2 INSTEAD OF 10
  1285. -* THANKS TO BOB SANDER-CEDERLOF
  1286. -PRDEC  LDX #0       DIGIT COUNT
  1287. -.62    LDA #16      BITS
  1288. -       STA $19      LOOP COUNTER
  1289. -       LDA #0
  1290. -.63    CMP #10/2
  1291. -       BCC .64
  1292. -       SBC #10/2    CARRY REMAINS SET TO SHIFT INTO QUOTIENT
  1293. -.64    ROL $50      SHIFT IN RESULT WHILE SHIFTING OUT NUMBER
  1294. -       ROL $51
  1295. -       ROL
  1296. -       DEC $19
  1297. -       BNE .63
  1298. -       PHA          SAVE DIGIT
  1299. -       INX          COUNT DIGIT
  1300. -       LDA $50
  1301. -       ORA $51      ANYTHING LEFT?
  1302. -       BNE .62      NEXT DIGIT
  1303. -.66    PLA
  1304. -       ORA #"0
  1305. -       STY $24
  1306. -       JSR FDF0     COUT WOULD CHANGE X
  1307. -       LDY $24
  1308. -       DEX
  1309. -       BNE .66
  1310. -       RTS
  1311. -*--------------------------------
  1312. -PSS    LDX PPNT
  1313. -       LDA $1A
  1314. -       STA PSTACK,X
  1315. -       LDA $1B
  1316. -       STA PSTACK2,X
  1317. -       INC PPNT
  1318. -       RTS
  1319. -PLS    DEC PPNT
  1320. -       LDX PPNT
  1321. -       LDA PSTACK,X
  1322. -       STA $1A
  1323. -       LDA PSTACK2,X
  1324. -       STA $1B
  1325. -       RTS
  1326. =start
  1327. -*
  1328. -SAVE START3,S6,D1
  1329. -*--------------------------------
  1330. -* INITIALIZATION
  1331. -*--------------------------------
  1332. -TEMP   .EQ 2,3,4,5
  1333. -MISC   .EQ 6,7
  1334. -EDGE   .EQ 8,9
  1335. -WTOP   .EQ $22
  1336. -WBOT   .EQ $23
  1337. -NUMCHR .EQ 4        # CHARS (LIBR DOESN'T COUNT)
  1338. -*--------------------------------
  1339. -* COPY $F800-FFFF INTO RAMCARD
  1340. -INMATE LDA $C081    READ ROM
  1341. -       LDA $C081    WRITE RAM
  1342. -       LDY #0
  1343. -       STY 0
  1344. -       LDA #$F8
  1345. -       STA 1
  1346. -.1     LDA (0),Y
  1347. -       STA (0),Y
  1348. -       INY
  1349. -       BNE .1
  1350. -       INC 1
  1351. -       BNE .1
  1352. -       LDA #RESET   REDIRECT RESET
  1353. -       STA $FFFC    SO IT DOESN'T
  1354. -       LDA /RESET   CRASH.
  1355. -       STA $FFFD
  1356. -* READ INCARD INTO RAMCARD
  1357. -       LDA $C083    WRITE ENABLE
  1358. -       LDA $C083    RAMCARD
  1359. -       LDA $E000    CHECK FOR RAMCARD
  1360. -       EOR #$FF
  1361. -       STA $E000
  1362. -       CMP $E000
  1363. -       BEQ .2       CHANGED
  1364. -       JSR $FD8E
  1365. -       JSR $FD8E
  1366. -       LDA #16
  1367. -       STA $24
  1368. -       LDY /.15
  1369. -       LDA #.15
  1370. -       JSR PS
  1371. -       JMP BASIC
  1372. -.15    .US /NEEDS 64K=/
  1373. -.2     LDY #0
  1374. -.3     LDA .4,Y
  1375. -       BEQ .5
  1376. -       JSR $FDED    THE ONLY CALL TO $FDED
  1377. -       INY
  1378. -       BNE .3
  1379. -.4     .AS -/^DBLOADINCARD/  IMBEDDED CTRL-D
  1380. -       .DA $8D
  1381. -* LEAVE RAMCARD ALWAYS WRITE-ENABLED
  1382. -*--------------------------------
  1383. -* READ $6A00-B6FF FROM TC S3 - T10 SF
  1384. -       .DO PROD
  1385. -.5     LDY #1
  1386. -.6     LDA $B7E9,Y
  1387. -       STA SLOT,Y
  1388. -       DEY
  1389. -       BPL .6
  1390. -       .ELSE
  1391. -.5     LDA $B7E9
  1392. -       STA SLOT
  1393. -       LDA #1       DRIVE 1
  1394. -       STA DRIVE
  1395. -       .FIN
  1396. -       JSR NODOS
  1397. -       LDA #0
  1398. -       STA $3F2     POINT RESET
  1399. -       LDA #$E0
  1400. -       STA $3F3
  1401. -       JSR $FB6F
  1402. -       LDA #1       READ
  1403. -       STA CMND
  1404. -       LDA #$10
  1405. -       STA TRACK
  1406. -       LDA #$F
  1407. -       STA SECT
  1408. -       LDA #0
  1409. -       STA VOL
  1410. -       STA BUF
  1411. -       LDA #$B6
  1412. -       STA BUF+1
  1413. -       LDA #$4D
  1414. -       JSR RWG      READ BACKWARD FROM T10 SF
  1415. -*      JSR PROT
  1416. -       LDY #11
  1417. -.7     LDA KEYTAB,Y SET UP DEFAULT STARTING POINT FOR CONV. TABLES
  1418. -       STA KEYSTRT,Y
  1419. -       DEY
  1420. -       BPL .7
  1421. -*--------------------------------
  1422. -START  LDA #0
  1423. -       STA GAMOVR
  1424. -       LDY #2
  1425. -.0     STA BFCNT,Y  BFCNT,BBEG,BEND (ONLY NECESSARY FOR RESTART)
  1426. -       DEY
  1427. -       BPL .0
  1428. -       STA $C010
  1429. -* DETERMINE IF THIS APPLE TAKES LOWERCASE
  1430. -       JSR FBB3     GET SIGNATURE BYTE
  1431. -       CMP #6       ][e OR ][c
  1432. -       BNE .2
  1433. -       LDA #$FF
  1434. -       STA LWC
  1435. -.2     JSR FC58
  1436. -       JSR FB2F     VTAB 25
  1437. -       LDA #0
  1438. -       JSR APMSG
  1439. -       LDA #30
  1440. -       STA MINUTE
  1441. -       LDA #7       STARTING HOUR
  1442. -       STA HOUR
  1443. -       STA MONTH
  1444. -       LDA #21
  1445. -       STA DAY
  1446. -*      JSR CHECK
  1447. -PROG   JSR CHKEY
  1448. -       LDA TR
  1449. -       STA TREP
  1450. -.0     JSR GTIME
  1451. -       JSR CHKEY
  1452. -       DEC TREP
  1453. -       BNE .0
  1454. -       JSR TOURIST
  1455. -       JSR CHKEY
  1456. -       JSR SOCIAL
  1457. -       JSR CHKEY
  1458. -       JSR PLANS
  1459. -       JSR CHKEY
  1460. -       JSR IMP
  1461. -       BEQ .4       NO ENTERTAINMENT IF IMPRISONED
  1462. -       JSR GENT
  1463. -       JSR CHKEY
  1464. -.4     JSR SPEC
  1465. -       JSR CHKEY
  1466. -       JSR DOIT     DO DOs ON STACK
  1467. -       JSR CHKEY
  1468. -       LDA #ME
  1469. -       STA ACTOR
  1470. -       LDA LOC
  1471. -       STA ACLOC
  1472. -       JSR DISPLAY
  1473. -       JSR CHKEY
  1474. -       LDA GAMOVR
  1475. -       BEQ .2
  1476. -       LDA SCORE
  1477. -       STA $50
  1478. -       LDA #0
  1479. -       STA $51
  1480. -       LDA #26
  1481. -       JSR PADJ     GAME OVER
  1482. -       JSR YESNO
  1483. -       BNE .1
  1484. -       JSR RGS      READ GAME START
  1485. -       JMP START
  1486. -.1     JSR FB2F     TEXT
  1487. -       JMP BASIC
  1488. -.2     LDA LOC
  1489. -       STA LSTLOC
  1490. -       LDA #$2C     BIT
  1491. -       STA INPUT    INPUT FROM KEYBOARD
  1492. -       LDA #0
  1493. -       STA DQ       NOT A QUOTE
  1494. -       STA QMARK
  1495. -       LDA PATBUS+2
  1496. -       BNE .3       I'M BUSY
  1497. -       JSR PARSE
  1498. -.3     LDA #0
  1499. -       STA DQ       CLARIFY THAT ALL ACTIONS NOT CALLED BY PARSE
  1500. -* ARE TAKEN BY CHARS' OWN WILL
  1501. -       JMP PROG
  1502. -LWC    .BS 1        >=$80=LOWERCASE
  1503. -GAMOVR .BS 1
  1504. -TREP   .BS 1
  1505. -*--------------------------------
  1506. -* CHECK FOR TIME-TRIGGERED EVENTS
  1507. -* TIMERS
  1508. -GTIME  LDX #NUMTIM*2-2   
  1509. -.1     LDA TIMERS+1,X
  1510. -       BNE .2
  1511. -       LDA TIMERS,X LO BYTE
  1512. -       BEQ .4       LEAVE AT 0
  1513. -       DEC TIMERS,X
  1514. -       BNE .4
  1515. -       LDA TIMERACT,X
  1516. -       LDY TIMERACT+1,X
  1517. -       JSR TIMEV
  1518. -       BPL .4
  1519. -.2     LDA TIMERS,X
  1520. -       BNE .3
  1521. -       DEC TIMERS+1,X
  1522. -.3     DEC TIMERS,X
  1523. -.4     DEX
  1524. -       DEX
  1525. -       BPL .1
  1526. -* EVENTS AT SET TIME
  1527. -       LDX #NUMEV-1*2   (9-1)*2
  1528. -.5     TXA
  1529. -       LSR          A=A/2
  1530. -       TAY
  1531. -       LDA SETEVD,Y
  1532. -       BEQ .6       ANY DAY
  1533. -       CMP DAY
  1534. -       BNE .7
  1535. -.6     LDA SETEVHM,X
  1536. -       CMP HOUR
  1537. -       BNE .7
  1538. -       LDA SETEVHM+1,X
  1539. -       CMP MINUTE
  1540. -       BNE .7
  1541. -       LDA SETEVACT,X
  1542. -       LDY SETEVACT+1,X
  1543. -       JSR TIMEV
  1544. -.7     DEX
  1545. -       DEX
  1546. -       BPL .5
  1547. -* ADVANCE TIME
  1548. -       INC MINUTE
  1549. -       LDA MINUTE
  1550. -       CMP #60
  1551. -       BNE .8
  1552. -       LDY #0
  1553. -       STY MINUTE
  1554. -       INC HOUR
  1555. -       LDA HOUR
  1556. -       CMP #25
  1557. -       BNE .8
  1558. -*      INC DAY      DON'T SINCE SLEEPING DOES
  1559. -       INY
  1560. -       STY HOUR
  1561. -*      LDA DAY
  1562. -*      CMP #32
  1563. -*      BNE .8
  1564. -*      INC MONTH
  1565. -*      STY DAY
  1566. -.8     RTS
  1567. -TIMEV  STA VDAT+1
  1568. -       STY VDAT+2
  1569. -       TXA
  1570. -       PHA
  1571. -       JSR JSRSPC
  1572. -       PLA
  1573. -       TAX
  1574. -       RTS
  1575. -*--------------------------------
  1576. -SPEC   LDA GCNT     TIMER
  1577. -       BEQ .3
  1578. -       LDA GACT
  1579. -       LDY GDIR
  1580. -       JSR MOVE     GACT MOVING GDIR
  1581. -.3     LDY CROSS
  1582. -       BEQ SP5
  1583. -       CPY #3
  1584. -       BCC .4
  1585. -       INC BROKE
  1586. -       JSR INLINE
  1587. -       .DA .5,#NULL,#CHMAP,#HALL2,#WEST,#STR1,#CHMAP,#HALL2,#SOUTH,#STR1,#CHMAP,#HALL4,#EAST,#STR1,#CHMAP,#STAIR4,#NORTH,#STR1,#CHMAP,#STAIR1,#UP,#STR1,#CHMAP,#STAIR3,#DOWN,#STR1,#AINC,GAMOVR,#UPSCR,13
  1588. -* STUFF OUT OF SEQUENCE
  1589. -.8     .DA #15,#16,#17   TELEPORT MESSAGES
  1590. -.98    .DA #STR1,#STR1,#STR1,#STR1,#STR1,#STR1  LOCS WRAPPED TO
  1591. -.5     LDA #189     CONGRATS!
  1592. -       JSR APMSG
  1593. -.0     >PLA ACC,ACP
  1594. -       PHA
  1595. -       CMP #PROF
  1596. -       BEQ .1
  1597. -       CMP #PRIS1
  1598. -       BNE .2
  1599. -.1     LDA #17      LEAVE
  1600. -       JSR UP2      UPSCR
  1601. -       LDA #190     WITH THE PROF!
  1602. -       JSR APMSG
  1603. -.2     >PLA CRD,CDP
  1604. -       TAY
  1605. -       LDA .98,Y
  1606. -       TAY          LOC WRAPPED TO
  1607. -       LDX #IN
  1608. -       PLA
  1609. -       JSR REPEDG
  1610. -       DEC CROSS
  1611. -       BNE .0
  1612. -       LDY #3       ONLY 3 MESSAGES
  1613. -.4     LDA .8-1,Y
  1614. -       JSR APMSG
  1615. -SP5    LDA #0
  1616. -       STA CROSS
  1617. -       JSR INLINE
  1618. -* BURN OUT BATTERY IN LIT FLASH
  1619. -       .DA DRT,#ZERO,B1,#GOTO,.20,#$80,#ITIN,#BATT1,FLASH,#BITSET,FLASH,$40,#AJSR,.15,#$80,#ZERO,B1,#UPSCR,#12,#AZBIT,#BATT1,#$FF,$FFBF,#GOTO,.30
  1620. -.20    .DA #$80,#ZERO,B2,#GOTO,.40,#$80,#ITIN,#BATT2,FLASH,#BITSET,FLASH,$40,#AJSR,.25,#$80,#ZERO+$40,B2,#GOTO,.40,#ELSE,#UPSCR,#12,#AZBIT,#BATT2,#$FF,$FFBF
  1621. -.30    .DA #ADEL,#FLASH,#ADJEC,#LIT,#AZBIT,#FLASH,#$FF,$FFBF
  1622. -.40    .DA #$80,#BITSET,FAUC1,$20,#AREP,#WATER,#IN,#SINK1,#$80,#BITSET,FAUC2,$20,#AREP,#WATER,#IN,#SINK2,#$80,#BITSET,FAUC3,$20,#AREP,#WATER,#IN,#SINK3,#$80,#ITIN,#SUGAR,#DB,#UPSCR,15
  1623. -* LOWER BATTERY CHARGE BY TR
  1624. -* REQUIRES B2=B1+1
  1625. -.15    LDY #0
  1626. -       .HS 2C
  1627. -.25    LDY #1
  1628. -       SEC
  1629. -       LDA B1,Y
  1630. -       SBC TR
  1631. -       BCS .27
  1632. -       LDA #0       DECd BELOW 0
  1633. -.27    STA B1,Y
  1634. -       RTS
  1635. -*--------------------------------
  1636. -NORTH  .EQ 0
  1637. -WEST   .EQ 1
  1638. -SOUTH  .EQ 2
  1639. -EAST   .EQ 3
  1640. -UP     .EQ 4
  1641. -DOWN   .EQ 5
  1642. -TOURTO .EQ 6
  1643. -TJMP   .EQ 7
  1644. -STOP   .EQ 8
  1645. -STAY   .EQ 9        IGNORE
  1646. -TOURIST LDX #$FF
  1647. -.0     INX
  1648. -       LDA .15,X
  1649. -       BEQ .2       NO MORE TOURISTS
  1650. -       STA ACTOR
  1651. -       JSR PNTOBJ   X UNDIST
  1652. -       LDY #5
  1653. -       LDA (MISC),Y
  1654. -       LSR
  1655. -       BCC .0       NOT TOURING
  1656. -       STX TX
  1657. -       LDA .16,X
  1658. -       STA VDAT+1
  1659. -       LDA .17,X
  1660. -       STA VDAT+2
  1661. -       LDA .20,X    STORE POINTER TO TOURVERB
  1662. -       STA TO91
  1663. -       STA TO86
  1664. -       LDA .21,X
  1665. -       STA TO91+1
  1666. -       STA TO86+1
  1667. -       JSR GAL      GET ACTOR LOC, LEAVE IN A
  1668. -       CMP #LP+1
  1669. -       BCS .0       NO MOVEMENT IF NOT IN A PLACE (IE IN ME)
  1670. -       JSR SPCACT   ACT BEFORE MOVE
  1671. -.1     LDX TX
  1672. -       LDA TPL,X
  1673. -       STA .10+1
  1674. -       LDA TPH,X
  1675. -       STA .10+2
  1676. -       JSR .10
  1677. -       CMP #DOWN+1
  1678. -       BCS .3       NOT A DIR
  1679. -       JSR TM       IN PLAN CW
  1680. -       BCC .7       SUCCESS
  1681. -       BCS .8       FAIL, NO INC
  1682. -.2     RTS
  1683. -.3     CMP #STOP
  1684. -       BNE .4
  1685. -       JSR TO3      PLACED OUT OF LINE SO WE CAN USE LOCAL LABELS
  1686. -       JMP .7
  1687. -.4     CMP #TJMP
  1688. -       BNE .5
  1689. -       JSR .9
  1690. -       LDX TX
  1691. -       STA TPL,X
  1692. -       JSR .9
  1693. -       STA TPH,X
  1694. -       BNE .1       ALWAYS
  1695. -.5     CMP #TOURTO
  1696. -       BNE .7
  1697. -       JSR .9
  1698. -       TAY
  1699. -       STY ACLOC
  1700. -       LDA ACTOR
  1701. -       LDX #IN
  1702. -       JSR REPEDG
  1703. -       JMP .75
  1704. -.7     JSR GAL      FOR SPCACT
  1705. -.75    JSR .11
  1706. -.8     JSR SPCACT
  1707. -       LDX TX
  1708. -       LDA .10+1    UPDATE ROUTE POINTER
  1709. -       STA TPL,X
  1710. -       LDA .10+2
  1711. -       STA TPH,X
  1712. -       JMP .0       ALWAYS
  1713. -.9     JSR .11
  1714. -.10    LDA $FFF
  1715. -       RTS
  1716. -.11    INC .10+1
  1717. -       BNE .12
  1718. -       INC .10+2
  1719. -.12    RTS
  1720. -* TOURISTS
  1721. -.15    .DA #BALL,GUARD
  1722. -* SPCACT POINTERS
  1723. -.16    .DA #.30,#.35
  1724. -.17    .DA /.30,/.35
  1725. -* TOURVERB POINTERS
  1726. -.20    .DA #BS,#WS
  1727. -.21    .DA /BS,/WS
  1728. -* TOURIST DATA
  1729. -.30    .DA 0
  1730. -* WATCH GOTO .35: NEEDS A 0
  1731. -.35    .DA #0,#INROOM+$40,#RUM,#GOTO,.35,#ELSE,#UPSCR,#1,#DO,#GUARD,#DRI,RUM,0,#0,#$80,#ISEDG,#RUM,#IN,VX,#BITSET+$40,#VX,$2000,0,#BITSET,#VX,4,#0,#DO,#GUARD,#OPE,VX,0,#0,#$80,#NULL,#DO,#GUARD,#GET,VX,0,0  DON'T AJSR DOIT
  1732. -BS     .US /BOUNCED=/
  1733. -WS     .US /WALKED=/
  1734. -TO31   .DA #DOWN,#TJMP,TO31
  1735. -TO36   .DA #EAST,#EAST,#EAST,#EAST,#WEST,#WEST,#WEST,#WEST,#TJMP,TO36
  1736. -TX     .BS 1        TEMP X
  1737. -TO85   .US /< JUST $/
  1738. -TO86   .DA $FFF
  1739. -       .US / INTO THE ROOM.@=/
  1740. -* TO91 IS FILLED WI TOURVERB ADDR, TO92 WI DIRECTION WORD#
  1741. -TO90   .US /< JUST $/
  1742. -TO91   .DA $FFF
  1743. -TO92   .US /_ OUT@  OF THE ROOM.@=/
  1744. -TO3    LDA ACTOR
  1745. -       JSR PNTOBJ
  1746. -       LDY #5
  1747. -       LDA (MISC),Y
  1748. -       AND #$FE
  1749. -       STA (MISC),Y
  1750. -       RTS
  1751. -*--------------------------------
  1752. -GAL    LDA ACTOR
  1753. -GAL2   LDX #IN
  1754. -       JSR GETOBJ
  1755. -       PLA
  1756. -       STA ACLOC
  1757. -       RTS
  1758. -*--------------------------------
  1759. -* INPUT STRING
  1760. -* ON EXIT: X=LEN+1
  1761. -ACUNK  .BS 1        1=ACCEPT UNKNOWN WORDS
  1762. -RE     .BS 1        RIGHT EDGE OF INPUT
  1763. -INSTRING .EQ $200
  1764. -BUFFER .EQ $B700,B7FF CIRCULAR BUFFER
  1765. -INPUT  BIT PRSQT    CHANGED TO JMP TO USE PRSQT
  1766. -       JSR FD8E
  1767. -       LDA #">      PROMPT
  1768. -       LDY #0
  1769. -       STY ACUNK
  1770. -       STA ($28),Y
  1771. -       INY
  1772. -       LDX #1
  1773. -       STX RE
  1774. -.1     LDA ($28),Y
  1775. -       SEC
  1776. -       SBC #$40     FLASH
  1777. -       CMP #$80
  1778. -       BCC .15
  1779. -       SBC #$40
  1780. -       CMP #$60
  1781. -       BCC .15
  1782. -       SBC #$60     LOWERCASE -> INVERSE
  1783. -.15    STA ($28),Y
  1784. -.2     JSR GETKEY
  1785. -       CMP #$82     CTRL-B
  1786. -       BNE .21
  1787. -       JSR CB
  1788. -       JMP .2
  1789. -.21    CMP #$98     CTRL-X
  1790. -       BNE .23
  1791. -       LDA #"\
  1792. -       STA ($28),Y
  1793. -       JMP INPUT
  1794. -.23    CMP #$8D
  1795. -       BEQ .7
  1796. -       CMP #$88     BS
  1797. -       BNE .24
  1798. -       JSR UNF
  1799. -       JMP .3
  1800. -.24    CMP #$95     ->
  1801. -       BNE .27
  1802. -       CPX RE
  1803. -       BCS .2       ALREADY AT RE
  1804. -       JSR UNF
  1805. -       JSR INCH
  1806. -       JMP .65
  1807. -.27    CMP #$FF     DELETE
  1808. -       BEQ .90
  1809. -       CMP #$84     CTRL-D
  1810. -       BEQ .90
  1811. -.35    CMP #$A0
  1812. -       BCC .2       IGNORE CTRLS
  1813. -.5     JSR INS
  1814. -       STA ($28),Y
  1815. -       CMP #$E0
  1816. -       BCC .55
  1817. -       AND #$DF     ->UPPERCASE
  1818. -.55    STA INSTRING-1,X
  1819. -.6     JSR INCH
  1820. -.65    INX
  1821. -       BNE .1
  1822. -.7     LDX RE
  1823. -       LDA #$A0
  1824. -       STA INSTRING-1,X
  1825. -       JSR UNF
  1826. -       LDA #0
  1827. -       STA INSTRING,X
  1828. -       STA DIDQ     MAY BE SET BY TSAY
  1829. -       RTS
  1830. -* DELETE CHAR BEFORE CURSOR
  1831. -.90    STX TEMP
  1832. -       STY TEMP+1
  1833. -       LDA $25
  1834. -       PHA
  1835. -       JSR UNF
  1836. -       DEX
  1837. -       BEQ .96      AT LEFT EDGE
  1838. -       JSR DECH
  1839. -.91    LDA INSTRING,X
  1840. -       STA INSTRING-1,X
  1841. -       JSR INCH
  1842. -       LDA ($28),Y
  1843. -       JSR DECH
  1844. -       STA ($28),Y
  1845. -       JSR INCH
  1846. -.92    INX
  1847. -       CPX RE
  1848. -       BCC .91
  1849. -       DEC RE
  1850. -       LDY TEMP+1
  1851. -.96    LDX TEMP
  1852. -       PLA
  1853. -       STA $25
  1854. -       JSR FC22
  1855. -.3     JSR DECH
  1856. -       DEX
  1857. -       BEQ .6
  1858. -       JMP .1
  1859. -*--------------------------------
  1860. -INCH   PHA
  1861. -       INY
  1862. -       CPY #$28
  1863. -       BCC .5
  1864. -       JSR FD8E
  1865. -       LDY #0
  1866. -.5     PLA
  1867. -       RTS
  1868. -*--------------------------------
  1869. -DECH   PHA
  1870. -       DEY
  1871. -       BPL .5
  1872. -       JSR FC1A
  1873. -       LDY #$27
  1874. -.5     PLA
  1875. -       RTS
  1876. -*--------------------------------
  1877. -* CONVERT FLASHING TO NORMAL
  1878. -UNF    LDA ($28),Y
  1879. -       CLC
  1880. -       ADC #$40     UNFLASH
  1881. -       CMP #$A0
  1882. -       BCS .2
  1883. -       ADC #$40     LETTER
  1884. -       CMP #$A0
  1885. -       BCS .2
  1886. -       ADC #$60     LOWERCASE
  1887. -.2     STA ($28),Y
  1888. -       RTS
  1889. -*--------------------------------
  1890. -* INSERT CHAR UNDER CURSOR
  1891. -* START AT END & MOVE EACH CHAR UP 1 BYTE
  1892. -INS    PHA
  1893. -       STY TEMP
  1894. -       STX TEMP+1
  1895. -       JSR UNF
  1896. -* DON'T NEED TO SAVE $28,29 BECAUSE WE'LL GET BACK TO SAME SPOT
  1897. -       LDA RE
  1898. -       PHA
  1899. -       SEC
  1900. -       SBC TEMP+1
  1901. -       TAX
  1902. -       BEQ .1
  1903. -.0     JSR INCH
  1904. -       DEX
  1905. -       BNE .0
  1906. -.1     PLA
  1907. -       TAX
  1908. -.3     LDA ($28),Y
  1909. -       JSR INCH
  1910. -       STA ($28),Y
  1911. -       JSR DECH=transform
  1912. -*
  1913. -SAVETRANSFORM10.3
  1914. -*--------------------------------
  1915. -* PATTERN-MATCHING TRANSFORMS
  1916. -* PATTERN MUST BEGIN WI WTYPE1 TO MATCH
  1917. -*--------------------------------
  1918. -LENORG .EQ 0             WAS ONCE TNPNT
  1919. -LENFIN .EQ 1
  1920. -TRANSFORM LDA #2
  1921. -       STA TRL
  1922. -T0     JSR CHKEY
  1923. -       LDY #0
  1924. -       STY MISC          INDEX
  1925. -T1     LDX WTYPE,Y
  1926. -       LDA TRNSTAB,X     POINTER INTO NEXT TYPE TRANSFORM
  1927. -       BNE .0
  1928. -       JMP NM0           NO TRANSFORMS STARTING WI THIS TYPE
  1929. -.0     PHA
  1930. -.1     INX
  1931. -       LDA TRNSTAB,X     POINTER INTO NEXT TYPE TRANSFORM
  1932. -       BEQ .1            FIND NEXT TRANS TYPE
  1933. -       STA CURWORD
  1934. -       PLA
  1935. -       TAX
  1936. -T15    LDA TRNSTYP,X     LEN OF ORIG PATTERN
  1937. -       STA LENORG
  1938. -       STA TEMP          COUNTER
  1939. -       LDA TRNSVERB,X    LEN OF FINAL PATTERN
  1940. -       STA LENFIN
  1941. -       TXA
  1942. -       CLC
  1943. -       ADC LENORG
  1944. -       ADC LENFIN
  1945. -       STA TEMP+1        START OF NEXT TRANSFORM
  1946. -       LDA TRNSNOUN,X    PRIORITY?
  1947. -       CMP TRL
  1948. -       BCC NOMATCH       TOO LOW
  1949. -       BCS T3
  1950. -T2     LDA TRNSTYP,X
  1951. -       CMP WTYPE,Y
  1952. -       BEQ T3
  1953. -       CMP WTYPE2,Y
  1954. -       BEQ T3
  1955. -       CMP WTYPE3,Y
  1956. -       BNE NOMATCH
  1957. -T3     LDA TRNSWRDH,X
  1958. -       BNE .5
  1959. -       LDA TRNSWRDL,X
  1960. -       CMP #11
  1961. -       BCS .4
  1962. -       STX MISC+1
  1963. -       TAX
  1964. -       LDA WLO,Y
  1965. -       STA VARLO,X
  1966. -       LDA WHI,Y
  1967. -       STA VARHI,X
  1968. -       LDA WVERB,Y
  1969. -       STA VARVERB,X
  1970. -       LDA WNOUN,Y
  1971. -       STA VARNOUN,X
  1972. -       LDX MISC+1
  1973. -       JMP NM1
  1974. -.4     LDA #0
  1975. -.5     CMP WHI,Y
  1976. -       BNE NOMATCH
  1977. -       LDA TRNSWRDL,X
  1978. -       CMP WLO,Y
  1979. -       BEQ NM1
  1980. -NOMATCH LDX TEMP+1       START OF NEXT TRANSFORM
  1981. -       LDY MISC
  1982. -       CPX CURWORD       NEXT TRANSFORM TYPE
  1983. -       BCC T15           NEXT TRANS
  1984. -NM0    INC MISC
  1985. -       INY
  1986. -       CPY WORDS
  1987. -       BEQ .1
  1988. -       JMP T1
  1989. -.1     LDA #0
  1990. -       STA WTYPE,Y       MARK END OF WT1 & WT2 & WT3
  1991. -       STA WTYPE2,Y      SO A NP DOESN'T FLY OFF INTO NOWHERE
  1992. -       STA WTYPE3,Y
  1993. -       DEC TRL
  1994. -       BEQ .2
  1995. -       JMP T0            GO BACK & DO MORE
  1996. -.2     JMP ATN           ALL DONE!
  1997. -NM1    INX
  1998. -       CPY WORDS
  1999. -BNM    BCS NOMATCH
  2000. -       INY
  2001. -       DEC TEMP
  2002. -       BEQ TMATCH
  2003. -       JMP T2
  2004. -TMATCH STY WNUM     WORD AFTER MATCH
  2005. -       STX MISC+1
  2006. -       TYA
  2007. -       SEC
  2008. -       SBC LENORG
  2009. -       CLC
  2010. -       ADC LENFIN
  2011. -       TAX
  2012. -       CMP WNUM
  2013. -       BEQ MOVED    LEN(FIN)=LEN(ORG)
  2014. -       BCS .2       LEN(FIN)>LEN(ORG)
  2015. -* LEN(FIN) < LEN(ORG)
  2016. -.1     JSR TMOVE
  2017. -       INX
  2018. -       INY
  2019. -       CPY WORDS
  2020. -       BCC .1
  2021. -       BCS MOVED
  2022. -* LEN(FIN) > LEN(ORG)
  2023. -.2     SBC WNUM
  2024. -       CLC
  2025. -       ADC WORDS
  2026. -       TAX
  2027. -       LDY WORDS
  2028. -.3     JSR TMOVE
  2029. -       DEX
  2030. -       DEY
  2031. -       CPY WNUM
  2032. -       BCS .3
  2033. -MOVED  LDA WORDS
  2034. -       SEC
  2035. -       SBC LENORG
  2036. -       CLC
  2037. -       ADC LENFIN
  2038. -       STA WORDS
  2039. -       LDY MISC     1ST WORD IN MATCH
  2040. -       TYA
  2041. -       CLC
  2042. -       ADC LENFIN
  2043. -       STA TEMP
  2044. -       LDX MISC+1   TRNS DATA AFTER LENFIN
  2045. -.1     CPY TEMP     THIS CMP MUST BE AT BEGINNING OF LOOP
  2046. -* TO CATCH TRANSFORMS WI FINAL LENGTH 0
  2047. -       BEQ BNM      DONE
  2048. -       LDA TRNSWRDH,X
  2049. -       BNE .3       NOT A VAR
  2050. -       LDA TRNSWRDL,X
  2051. -       CMP #11
  2052. -       BCS .2       NOT A VAR
  2053. -       STX MISC+1
  2054. -       TAX
  2055. -       LDA VARHI,X  READ VAR
  2056. -       STA WHI,Y
  2057. -       LDA VARLO,X  READ VAR
  2058. -       STA WLO,Y
  2059. -       LDA VARVERB,X
  2060. -       STA WVERB,Y
  2061. -       LDA VARNOUN,X
  2062. -       STA WNOUN,Y
  2063. -       LDX MISC+1
  2064. -       BNE .4       ALWAYS
  2065. -.2     LDA TRNSWRDH,X
  2066. -.3     STA WHI,Y
  2067. -       LDA TRNSWRDL,X
  2068. -       STA WLO,Y
  2069. -       LDA TRNSVERB,X
  2070. -       STA WVERB,Y
  2071. -       LDA TRNSNOUN,X
  2072. -       STA WNOUN,Y
  2073. -.4     LDA TRNSTYP,X
  2074. -       STA WTYPE,Y
  2075. -       LDA #0
  2076. -       STA WTYPE2,Y
  2077. -       STA WTYPE3,Y
  2078. -       INX
  2079. -       INY
  2080. -       BNE .1
  2081. -TMOVE  LDA WLO,Y
  2082. -       STA WLO,X
  2083. -       LDA WHI,Y
  2084. -       STA WHI,X
  2085. -       LDA WTYPE,Y
  2086. -       STA WTYPE,X
  2087. -       LDA WTYPE2,Y
  2088. -       STA WTYPE2,X
  2089. -       LDA WTYPE3,Y
  2090. -       STA WTYPE3,X
  2091. -       LDA WVERB,Y
  2092. -       STA WVERB,X
  2093. -       LDA WNOUN,Y
  2094. -       STA WNOUN,X
  2095. -       RTS
  2096. -* TRL: 2, THEN 1. TRANSFORM CAN BE MADE IF IT'S TRL# >= TRL.
  2097. -TRL    .BS 1        TRANS LOOP #
  2098. -* NTH TRNSTAB ENTRY POINTS TO 1ST TRNFRM WHERE 1ST TYPE IN STRING = N
  2099. -* 00 MEANS NO TRANSFORMS BEGINNING WI THAT TYPE
  2100. -* LAST BYTE IN TRNSTAB POINTS TO 1ST BYTE AFTER TRANSFORM DATA
  2101. -TRNSTAB .EQ *-1
  2102. -       .HS 0001070000000000000000001B000000000000004500000000495500005B000063007B7ED9
  2103. -* TRNSTYP: LEN(ORG) ORG  ORG/F F
  2104. -* TRNSWRD:   ORIG   ORG  ORG/F F
  2105. -* TRNSVERB:LEN(FIN) BLANK BL/F F
  2106. -* TRNSNOUN:  TRL#    BL   BL/F F
  2107. -* WORD #S 0000-000F ARE VARS. WHEN A VAR IS GIVEN IN TRNSWRD(ORG),
  2108. -* THE WRD#, VERB, AND NOUN ARE COPIED INTO VARLO,VARHI,VARVERB,& VARNOUN.
  2109. -* WHEN THE SAME VAR IS IN TRNSWRD(FIN),THOSE VALUES ARE READ
  2110. -* INTO THE FINAL PATTERN.
  2111. -TRNSTYP .EQ *-1
  2112. -* VI
  2113. -       .DA #2,#PM,#VT
  2114. -       .DA #2,#PRT,#VT
  2115. -* VT
  2116. -       .DA #3,#VT,#TRNS,#VT
  2117. -       .DA #4,#NUM,#VT,#TRNS,#VT
  2118. -       .DA #2,#CN,#CN
  2119. -       .DA #2,#CN,#VT,#CN
  2120. -       .DA #2,#CN,#VT,#CN
  2121. -* PM
  2122. -*      .DA #3,#TRNS,#TRNS,#PM
  2123. -* CN
  2124. -       .DA #2,#CN,#CN
  2125. -       .DA #3,#TRNS,#CN,#CN
  2126. -       .DA #3,#CN,#CN,#CN
  2127. -       .DA #2,#CN,#CN
  2128. -       .DA #2,#CN,#CN
  2129. -       .DA #2,#CN,#CN
  2130. -       .DA #2,#CN,#CN
  2131. -       .DA #2,#CN,#CN
  2132. -       .DA #2,#CN,#CN
  2133. -       .DA #2,#CN,#CN
  2134. -       .DA #3,#PM,#ADJ,#CN
  2135. -       .DA #2,#CN,#CN
  2136. -       .DA #2,#CN,#CN
  2137. -* RP
  2138. -       .DA #3,#VA,#PN,#PN
  2139. -* CL
  2140. -       .DA #2,#CN,#CN
  2141. -       .DA #2,#CN,#CN
  2142. -       .DA #2,#CN,#CN
  2143. -       .DA #2,#CN,#CN
  2144. -* VA
  2145. -       .DA #2,#PI,#VT
  2146. -       .DA #2,#PM,#VT
  2147. -* QUES
  2148. -       .DA #3,#VA,#PN,#VP,#PN
  2149. -       .DA #2,#VA,#VT
  2150. -* CONT
  2151. -       .DA #1,#VA,#NEG
  2152. -       .DA #1,#QUES,#NEG
  2153. -       .DA #1,#QUES,#NEG
  2154. -       .DA #1,#VA,#NEG
  2155. -       .DA #1,#NS,#VA
  2156. -       .DA #1,#QUES,#NEG
  2157. -       .DA #1,#VA,#NEG
  2158. -       .DA #1,#NS,#VA
  2159. -* TRNS
  2160. -       .DA #2,#TRNS
  2161. -       .DA #1
  2162. -* VZ: FAKE VERB TYPE (GIVE, THROW) USED SO BELOW TRANSFORM GETS THEM
  2163. -* FOLLOWING 9: VT NP1 NP2 -> VT NP2 TO NP1
  2164. -       .DA #3,#CN,#CN,#VT,#CN,#PM,#CN
  2165. -       .DA #4,#CN,#ADJ,#CN,#VT,#ADJ,#CN,#PM,#CN
  2166. -       .DA #4,#CN,#NUM,#CN,#VT,#NUM,#CN,#PM,#CN
  2167. -       .DA #4,#CN,#POS,#CN,#VT,#POS,#CN,#PM,#CN
  2168. -       .DA #4,#ADJ,#CN,#CN,#VT,#CN,#PM,#ADJ,#CN
  2169. -       .DA #4,#NUM,#CN,#CN,#VT,#CN,#PM,#NUM,#CN
  2170. -       .DA #4,#POS,#CN,#CN,#VT,#CN,#PM,#POS,#CN
  2171. -       .DA #4,#TRNS,#CN,#CN,#VT,#CN,#PM,#CN
  2172. -       .DA #5,#CN,#ADJ,#ADJ,#CN,#VT,#ADJ,#ADJ,#CN,#PM,#CN
  2173. -       .DA #5,#ADJ,#CN,#ADJ,#CN,#VT,#ADJ,#CN,#PM,#ADJ,#CN
  2174. -TRNSWRDL .EQ *-1
  2175. -       .DA #281,#25,#149  LOOK AT -> EXAM
  2176. -       .DA #281,#188,#180  LOOK FOR -> FIND
  2177. -       .DA #77,#361,#341,#361  CARRY PHOTO OF -> PHOTO
  2178. -       .DA #77,#11,#361,#341,#361  CARR A PHOTO OF -> PHOTO
  2179. -* (NOTE: BAD IF PHOTO IS OBJ: "TAKE PHOTO OF MARK" AMBIGUOUS)
  2180. -       .DA #292,#56,#56    LIGHT BULB -> BULB
  2181. -       .DA #401,#310,#390,#310  REMOVE MAG -> PRY MAG
  2182. -       .DA #401,#423,#524,#423  REMOVE SCREW -> UNSCREW SCREW
  2183. -*      .DA #_,#_,#_,#_     ON TOP OF -> ON
  2184. -       .DA #454,#34,#454   SOAP BAR -> SOAP
  2185. -       .DA #34,#341,#454,#454  BAR OF SOAP -> SOAP
  2186. -       .DA #430,#311,#430,#430  DR MARK SHEF -> SHEF
  2187. -       .DA #430,#430,#430  DR SHEFF -> SHEF
  2188. -       .DA #311,#430,#430  MARK SHEFF -> SHEFF
  2189. -       .DA #482,#368,#368  TAPE PLAYER -> PLAYER
  2190. -       .DA #325,#325,#325  MRS KIRBY -> MRS
  2191. -       .DA #177,#66,#66    FILE CABIN -> CABIN
  2192. -       .DA #381,#381,#381  PROF HALD -> PROF
  2193. -       .DA #74,#74,#74     ID CARD -> CARD
  2194. -       .DA #46,#346,#89,#46  BOOK ON CIVIL WAR -> BOOK
  2195. -       .DA #528,#221,#221  VENT GRILL -> GRILL
  2196. -       .DA #108,#50,#50    GLASS BOTTLE -> BOTTLE
  2197. -       .DA #0,#38,#1,#1    RP BE PN -> PN
  2198. -       .DA #84,#103,#103   CHECK COUNT -> LCOUNT
  2199. -       .DA #125,#537,#537  DIGITAL WATCH -> WATCH
  2200. -       .DA #562,#34,#34    WOODEN BAR -> BAR
  2201. -       .DA #506,#66,#66    TOOL CAB -> CAB
  2202. -       .DA #98,#526,#186   COME WITH -> FOLLOW
  2203. -       .DA #294,#502,#237  LISTEN TO -> HEAR
  2204. -       .DA #545,#38,#0,#281,#0   WHAT BE PN -> LOOK PN
  2205. -       .DA #548,#38,#180   WHERE BE -> FIND
  2206. -       .DA #21,#38,#338    AREN'T
  2207. -       .DA #70,#315,#338   CANNOT -> MAY NOT
  2208. -       .DA #133,#129,#338  DON'T
  2209. -       .DA #233,#232,#338  HASN'T
  2210. -       .DA #258,#257,#38   I'M
  2211. -       .DA #434,#315,#338  SHOULDN'T -> MAY NOT
  2212. -       .DA #561,#554,#338  WON'T
  2213. -       .DA #575,#574,#38   YOU'RE
  2214. -       .DA #341,#489       OF THE -> _
  2215. -       .DA #489            THE -> _
  2216. -       .DA #0,#1,#2,#0,#2,#502,#1  VZ NP1 NP2 -> VZ NP2 TO NP1
  2217. -       .DA #0,#1,#2,#3,#0,#2,#3,#502,#1
  2218. -       .DA #0,#1,#2,#3,#0,#2,#3,#502,#1
  2219. -       .DA #0,#1,#2,#3,#0,#2,#3,#502,#1
  2220. -       .DA #0,#1,#2,#3,#0,#3,#502,#1,#2
  2221. -       .DA #0,#1,#2,#3,#0,#3,#502,#1,#2
  2222. -       .DA #0,#1,#2,#3,#0,#3,#502,#1,#2
  2223. -       .DA #0,#489,#1,#3,#0,#3,#502,#1
  2224. -       .DA #0,#1,#2,#3,#4,#0,#2,#3,#4,#502,#1
  2225. -       .DA #0,#1,#2,#3,#4,#0,#3,#4,#502,#1,#2
  2226. -TRNSWRDH .EQ *-1
  2227. -       .DA #1,0          VI
  2228. -       .DA #1,0
  2229. -       .DA #0,#1,#1,#1   VT
  2230. -       .DA 0,#1,#1,#1
  2231. -       .DA #1,0
  2232. -       .DA /401,/310,/390,/310
  2233. -       .DA /401,/423,/524,/423
  2234. -*      .DA #1,#1,#1,#1   PM
  2235. -       .DA 1,#1          CN
  2236. -       .DA #0,#1,#1,#1
  2237. -       .DA #1,#1,#1,#1
  2238. -       .DA #1,#1,#1
  2239. -       .DA #1,#1,#1
  2240. -       .DA #1,#1,#1
  2241. -       .DA #1,#1,#1
  2242. -       .DA 0,#0
  2243. -       .DA #1,#1,#1
  2244. -       .DA 0,#0
  2245. -       .DA #0,/346,0
  2246. -       .DA /528,/221,/221
  2247. -       .DA /108,/50,/50
  2248. -       .DA 0,0           RP
  2249. -       .DA 0,#0          CL
  2250. -       .DA #0,#2,#2
  2251. -       .DA #2,0
  2252. -       .DA /506,/66,/66
  2253. -       .DA #0,/526,#0    VA
  2254. -       .DA #1,/502,/237
  2255. -       .DA #2,0,1        QUES
  2256. -       .DA 2,#0
  2257. -       .DA 0,#1          CONT
  2258. -       .DA #0,#1,#1
  2259. -       .DA 0,#1
  2260. -       .DA 0,#1
  2261. -       .DA #1,1
  2262. -       .DA #1,#1,#1
  2263. -       .DA #2,#2,#1
  2264. -       .DA #2,2
  2265. -       .DA #1,#1         TRNS
  2266. -       .DA #1
  2267. -       .DA 0,0,#0,1      VZ
  2268. -       .DA 0,0,0,#0,1
  2269. -       .DA 0,0,0,#0,1
  2270. -       .DA 0,0,0,#0,1
  2271. -       .DA 0,0,0,/502,0
  2272. -       .DA 0,0,0,/502,0
  2273. -       .DA 0,0,0,/502,0
  2274. -       .DA #0,/489,0,0,/502,#0
  2275. -       .DA 0,0,0,0,#0,/502,#0
  2276. -       .DA 0,0,0,0,/502,0
  2277. -TRNSVERB .EQ *-1
  2278. -       .DA 1,#EXA        VI
  2279. -       .DA 1,#FIN
  2280. -       .DA #1,0,#PHO     VT
  2281. -       .DA 1,0,#PHO
  2282. -       .DA #1,0
  2283. -       .DA 2,PRY,2,UNS
  2284. -*      .DA 1,0           PM
  2285. -       .DA #1,0          CN
  2286. -       .DA 1,0
  2287. -       .DA 1,0
  2288. -       .DA #1,0
  2289. -       .DA #1,0
  2290. -       .DA #1,0
  2291. -       .DA #1,0
  2292. -       .DA #1,0
  2293. -       .DA #1,0
  2294. -       .DA #1,0
  2295. -       .DA 1,0
  2296. -       .DA #1,0
  2297. -       .DA #1,0
  2298. -       .DA 1,0           RP
  2299. -       .DA #1,0          CL
  2300. -       .DA #1,0
  2301. -       .DA #1,0
  2302. -       .DA #1,0
  2303. -       .DA 1,#FOL        VA
  2304. -       .DA 1,#HEA
  2305. -       .DA #2,0,LOO      QUES
  2306. -       .DA 1,#FIN
  2307. -       .DA #2,0          CONT
  2308. -       .DA #2,0
  2309. -       .DA #2,0
  2310. -       .DA #2,0
  2311. -       .DA #2,0
  2312. -       .DA #2,0
  2313. -       .DA #2,0
  2314. -       .DA #2,0
  2315. -       .DA 0             TRNS
  2316. -       .DA #0
  2317. -       .DA #4,0,0,0,#5,0,0,0,0,#5,0,0,0,0,#5,0,0,0,0             VZ
  2318. -       .DA #5,0,0,0,0,#5,0,0,0,0,#5,0,0,0,0
  2319. -       .DA 4,0,0,0
  2320. -       .DA #6,0,0,0,0,0,#6,0,0,0,0,0
  2321. -TRNSNOUN .EQ *-1
  2322. -       .DA #2,0,#2,0     VI
  2323. -       .DA 2,0,#2,0,0    VT
  2324. -       .DA 2,#BULB1
  2325. -       .DA 2,#0,#MAG,2,#0,#SCREWS1
  2326. -*      .DA #2,0,#UNDER   PM
  2327. -       .DA 2,#SOAP1      CN
  2328. -       .DA #2,0,#SOAP1
  2329. -       .DA 2,#0,#MARK
  2330. -       .DA 2,#MARK
  2331. -       .DA 2,#MARK
  2332. -       .DA 2,#RECOR
  2333. -       .DA 2,#MRS
  2334. -       .DA 2,#CAB
  2335. -       .DA 2,#PROF
  2336. -       .DA 2,#ID
  2337. -       .DA 2,#0,#BOOK4
  2338. -       .DA 2,#GRILL1
  2339. -       .DA 2,#BOTT
  2340. -       .DA 2,0           RP
  2341. -       .DA 2,#LCOUNT     CL
  2342. -       .DA 2,#WATCH
  2343. -       .DA 2,#BAR
  2344. -       .DA 2,#CAB
  2345. -       .DA 1,#0          VA
  2346. -       .DA #2,0
  2347. -       .DA #1,0,0        QUES
  2348. -       .DA #1,0
  2349. -       .DA #2,0          CONT
  2350. -       .DA #2,0
  2351. -       .DA #2,0
  2352. -       .DA #2,0
  2353. -       .DA #2,0
  2354. -       .DA #2,0
  2355. -       .DA #2,0
  2356. -       .DA #2,0
  2357. -       .DA 2             TRNS
  2358. -       .DA #2
  2359. -       .DA 1,0,#0,TO,#1,0,0,0,TO,#1,0,0,0,TO,#1,0,0,0,TO         VZ
  2360. -       .DA 1,0,0,#TO,0
  2361. -       .DA 1,0,0,#TO,0
  2362. -       .DA 1,0,0,#TO,0
  2363. -       .DA 1,0,0,TO
  2364. -       .DA #1,0,0,0,0,TO
  2365. -       .DA 1,0,0,0,#TO,0
  2366. -VARLO  .BS 11
  2367. -VARHI  .BS 11
  2368. -VARVERB .BS 11
  2369. -VARNOUN .BS 11
  2370. + END OF ARCHIVE
  2371.