[comp.sources.apple2] v001SRC052: Inmate Parser -- ATN Based, Part02/05

jac@yoko.rutgers.edu (Jonathan A. Chandross) (06/01/91)

Submitted-by: Phil Goetz (goetz@cs.buffalo.EDU)
Posting-number: Volume 1, Source:52
Archive-name: util/parser/inmate/part02
Architecture: ANY_2
Version-number: 1.00


=display30
-*
-SAVE DISPLAY30,S6,D1
-DISPLAY LDA WTOP
-       STA WBOT
-       LDA #0
-       STA WTOP
-       STA LIGHT
-       JSR FC58
-       LDA #$18
-       STA WBOT
-       JSR PNTLOC
-.4     LDY #6       DEFAULT LIGHT
-       LDA (TEMP),Y
-       AND #7
-       BEQ .20      ALWAYS LIGHT
-       LSR
-       BEQ .8       ALWAYS DARK
-       LSR
-       BEQ .6       INHERITED
-* TIME-DEPENDENT
-       LDA (TEMP),Y
-       AND #3
-       TAY
-       LDA HOUR
-       CMP LIGBEG,Y
-       BCC .8       NOT YET LIGHT
-       CMP LIGEND,Y
-       BCS .8
-       BCC .20
-* INHERITED LIGHT
-.6     LDA LOC
-       LDX #IN
-       JSR GETOBJ
-       LDA LOC
-       JSR PNTOBJ   MUST PNTOBJ BEFORE PNTLOC BECAUSE PNTOBJ USES TEMP,+1
-       PLA
-       JSR PNTALOC
-       LDY #3
-       LDA (MISC),Y
-       AND #4       OPENABLE?
-       BEQ .4       NO
-       INY
-       LDA (MISC),Y
-       AND #$20     OPEN?
-       BNE .4       YES
-.8     LDA LOC
-       LDX #HOLDS
-       JSR GETOBJ   LIT OBJ?
-       STX TEMP+1
-       LDA #ME
-       LDX #HOLDS
-       JSR GETOBJ
-       TXA
-       CLC
-       ADC TEMP+1
-       TAX
-.10    DEX
-       BMI .15
-       PLA
-       JSR PNTOBJ
-       LDY #3
-       LDA (MISC),Y
-       AND #8       LIGHT?
-       BEQ .10      NO
-       INY
-       LDA (MISC),Y
-       AND #$40     PRIMED?
-       BEQ .10      NO
-       INC LIGHT    LIT OBJ
-       BNE .10
-.15    LDA LIGHT
-       BNE .20      LIT OBJ
-       JSR PLOC     A=0:IT'S DARK!
-       JSR PNTLOC
-       JMP D60
-.20    INC LIGHT
-       LDA LOC
-       PHA
-       LDX #2
-       STX SHIFT    CAP 1ST CHAR
-       JSR PROBJ    PRINT LOCATION
-       JSR FD8E
-       JSR FD8E
-       LDY /VIS
-       LDA #VIS
-       JSR PS
-       JSR CHKEY
-       PLA          OBJECT I'M IN
-       JSR PRCONT
-       LDA NONE     ANY ITEMS?
-       BNE .25      YES
-       JSR FC1A     MOVE CURSOR UP 1 LINE TO OVERWRITE "ITEMS"
-       JSR FC1A
-       LDA #0
-       STA $24
-       BEQ .30
-.25    LDY #0
-       JSR BLANK
-.30    JSR PNTLOC
-       LDY #$FF
-       STY NONE
-       INY
-       STY MISC
-D40    LDA (TEMP),Y
-       BEQ .50
-       INC NONE
-       BNE .45
-       JSR FD8E
-       LDY /OE
-       LDA #OE
-       JSR PS
-       LDY MISC
-.45    LDA #$A0
-       JSR FDF0
-       LDA DA,Y
-       PHA
-       LDA DA+6,Y
-       TAY
-       PLA
-       JSR PS
-.50    INC MISC
-       LDY MISC
-       CPY #6
-       BNE D40
-       LDA NONE
-       BMI D60
-       LDY $24
-       JSR BLANK
-       JSR FD8E
-D60    LDY #39
-       LDA #"-
-.65    STA ($28),Y
-       DEY
-       BPL .65
-       LDY $25
-       INY          SKIP A LINE FOR ---s
-       STY WTOP
-       LDA #23
-       STA $25
-       JSR FC22
-       LDY #6
-       LDA (TEMP),Y
-       BPL DPLOC
-       LDX LOC
-       CPX LSTLOC
-       BEQ .67
-       PHA
-       JSR RAND
-       CMP #$40
-       PLA
-       LDY #6
-       BCC DPLOC    PRINT LOC EVERY SO OFTEN
-.67    RTS          ALREADY PRINTED
-VIS    .US /VISIBLE ITEMS: =/
-OE     .US /OBVIOUS EXITS:=/
-DA     .DA #.70,#.75,#.80,#.85,#.90,#.95
-       .DA /.70,/.75,/.80,/.85,/.90,/.95
-.70    .US /NORTH=/
-.75    .US /WEST=/
-.80    .US /SOUTH=/
-.85    .US /EAST=/
-.90    .US /UP=/
-.95    .US /DOWN=/
-ALOC   .BS 1        A LOC
-ACLOC  .BS 1        ACTOR LOC
-LIGHT  .BS 1        >0=ROOM LIT
-LIGBEG .DA #7       BEGINNING HOUR FOR LIGHT IN TIME-DEP LOCS (0-3)
-LIGEND .DA #22
-DPLOC  LDX LIGHT
-       BNE .1
-       LDA LOC
-       CMP .0       ALREADY PRINTED "IT'S DARK" HERE?
-       BEQ .9       YES
-       STA .0
-       TXA
-       JMP PLOC     IT'S DARK!
-.9     RTS          COULD USE NEXT RTS, BUT LABEL TROUBLE
-.0     .HS FF
-.1     ORA #$80
-       STA (TEMP),Y NOW PRINTED
-PRLOC  LDA LOC
-       JSR PLOC
-       >PSHW VDAT+1,VSTK,VPNT
-       LDY #$FF
-.1     INY
-       LDA .10,Y
-       BEQ .5
-       CMP LOC
-       BNE .1
-       TYA
-       ASL
-       TAY
-       LDA .15,Y
-       STA VDAT+1
-       LDA .15+1,Y
-       STA VDAT+2
-       JSR SPCACT
-.5     >PLLW VDAT+1,VSTK,VPNT
-       RTS
-.10    .DA #OFFI,#STAIR1,#LIBR2,LOU2
-.15    .DA .20,.25,.30,.35
-.20    .DA #INROOM,#ED,#POKE,$10,#ED,#AMSG,#151,#$80,#INROOM,#MRS,#POKE,$10,#MRS,#AMSG,151
-.25    .DA #ZERO,BARREM,#AMSG,152
-.30    .DA #ITIN,#BOOK4,#SHELF,#AMSG,195
-.35    .DA #ITIN,#PLANT,#LOU2,#AMSG,211
-*--------------------------------
-* POINT TO OBJECT'S MAP
-PNTLOC LDA LOC
-PNTALOC STA ALOC
-       LDX #0
-       STX TEMP+1
-       LDX #3
-.60    ASL          A=A*8
-       ROL TEMP+1
-       DEX
-       BNE .60
-       SEC
-       SBC ALOC
-       BCS .70
-       DEC TEMP+1
-.70    CLC
-       ADC #MAP
-       STA TEMP
-       LDA TEMP+1
-       ADC /MAP
-       STA TEMP+1
-       RTS
-*--------------------------------
-PRCONT DEC LSTCOL   DON'T PRINT IN LAST COLUMN CAUSE WE'LL PRINT , AFTER
-       INC C1       ->1:DON'T PRINT IN 1ST COLUMN
-       LDX #HOLDS
-       JSR GETOBJ   FIND OBJS INSIDE THIS OBJ
-       STX TEMP+1
-       LDA #0
-       STA NONE
-.1     DEC TEMP+1
-       BMI .3
-       PLA
-       TAX
-       JSR PNTOBJ
-       LDY #5
-       LDA (MISC),Y
-       BMI .1       "INVISIBLE" OBJECT (IE TEETH)
-       TXA
-       JSR PROBJ
-       INC NONE     AT LEAST 1 OBJ
-       LDA #",
-       JSR FDF0
-       JMP .1
-.3     INC LSTCOL   RESTORE TO #$28
-       DEC C1       ->0
-       LDY $24
-       DEY
-       BPL .4
-       JSR FC1A     LAST , WAS IN LAST COLUMN, GO BACK 1 LINE TO ERASE
-       LDY #$27
-.4     JSR FC9E     CLEAR TO END OF LINE
-       JMP FD8E
-NONE   .BS 1        0=NO OBJS
-*--------------------------------
-PROBJ  PHA
-       LDX #ADJEC
-       JSR GETOBJ   1ST PRINT ADJS
-       STX TEMP
-.1     DEC TEMP
-       BMI .2
-       PLA          ADJ
-       JSR PADJ
-       LDA #$A0
-       JSR FDF0
-       JMP .1
-.2     PLA
-       JMP POBJ
-*--------------------------------
-* POINT TO OBJ DATA
-* ON ENTRY A=OBJ#
-PNTOBJ LDY #0
-       STY MISC+1
-       STY .2
-* A=A*6
-       STA TEMP
-       ASL
-       BCC .0
-       INC .2
-.0     STA TEMP
-       ROL MISC+1
-       ASL
-       ROL MISC+1
-       ADC TEMP     C=0
-       BCC .1
-       INC MISC+1
-       CLC
-.1     ADC #OBJECTS
-       STA MISC
-       LDA /OBJECTS
-       ADC MISC+1
-       ADC .2
-       STA MISC+1
-       RTS
-.2     .BS 1
-*--------------------------------
-* FIND WORD #Y,A IN LEX
-* CALLED BY PRWRD AND CONOUT
-FIRL   .BS 1
-FWILEX STY WNUM+1
-       INY          CPY #$FF:UNKNOWN #
-       BNE .0
-       PLA
-       PLA
-       LDA #"X
-       JMP FDF0     OK SINCE ONLY PRWRD AND CONOUT CAL FWILEX
-.0     STA WNUM
-       LDY #$FF
-.1     INY
-       LDA WNUM
-       CMP NUMTAB,Y
-       INY
-       LDA WNUM+1
-       SBC NUMTAB,Y SBC SO C COUNTS
-       BCS .1
-       TYA
-       LSR          A=A/2,C=1
-       ADC #"A"-2
-       STA FIRL     1ST LETTER
-       LDA WNUM
-       SEC
-       SBC NUMTAB-3,Y
-       PHP
-       STA WNUM
-* WON'T WORK IF WORD IS 256TH WORD OR LATER BEGINNING WI THAT LETTER
-       LDA TABFL-3,Y
-       STA MISC
-       LDA TABFL-2,Y
-       STA MISC+1
-       LDY #0
-       LDA (MISC),Y FOR Z=1
-       PLP
-       BEQ .6
-       BNE .35
-.3     JSR INY
-.35    LDA (MISC),Y
-       BMI .3       SCAN PAST LETTERS
-       BEQ .5       0 HAS NO PARM
-.4     CMP #SYN3+1  PARTS <= SYN HAVE 1 PARAM
-       BCS .5
-       JSR INY
-.5     JSR INY
-       LDA (MISC),Y
-       BPL .4
-       DEC WNUM
-       BNE .3
-.6     RTS
-*--------------------------------
-* PRINT WORD# Y,A
-* WON'T RETURN FOR X WORDS
-PRWRD  JSR FWILEX
-       PHA
-       LDA FIRL
-       JSR FDF0
-       PLA
-.6     JSR FDF0
-       JSR INY
-       LDA (MISC),Y
-       BMI .6
-       RTS
-*--------------------------------
-* PRINT VERB,WHICH IS 1ST WORD IN BUFFER
-PRVERB LDX #0
-       STY $24
-.1     LDA INSTRING,X
-       CMP #$A0
-       BEQ .3
-       LDY LWC
-       BEQ .2
-       ORA #$E0     =>LOWERCASE
-.2     JSR FDF0
-       INX
-       BNE .1
-.3     LDY $24
-       RTS
=edges
-*
-SAVEEDGES27,S6,D1
-JG     JSR GETEDG   MAY PLA PLA RTS
-       RTS          OR RTS
-RE0    LDY /CD
-       LDA #CD
-OMSG   SEC          FAILURE
-       STY RESHI+1
-       STA RESLO+1
-       RTS
-CD     .US /YOU CAN'T DO THAT!@=/
-* REPLACE EDGE A X _ _ WI A X x Y
-* ON EXIT, C=0 IF SUCCESS
-REPEDG STA EDGCMP+1
-       JSR FF4A     SAVE REGS
-       CPY $45      A=Y?
-       BEQ RE0
-       LDX #0
-       STX GCALLD
-       STX TEMP3+1  CAP FILLED
-       LDA $46
-       TAX
-       LSR
-       BCC .1       EDGE IN RIGHT DIRECTION
-       LDA $45
-       STY $45
-       STA $47
-       JSR CLCPNT
-       STX $46
-.1     CPX #BY
-       BNE .13
-       JMP ABYY
-.13    JSR CLCPNT
-       STA TEMP+1   x
-       JSR FF3F
-       JSR JG       JSR GETEDG;STRANGE CONDITIONAL RETURN
-       BCC .15      EDGE FOUND
-       PHA
-       PHA
-       PHA
-       PHA
-       JSR MAKEDG   ALLOCATE SPACE
-       JSR EREDG
-       JMP RE3      DON'T CHECK "OLD EDGE"
-.15    LDY #0
-       LDA (EDGE),Y
-       CMP $45      A:OLD EDGE IN SAME DIRECTION AS NEW?
-       BNE .2
-       LDY #3
-       LDA (EDGE),Y
-.2     STA OLDTAIL  USED BY GETTER IN DOOBJ
-       CMP $47      Y:EDGE ALREADY THERE?
-       BNE RE3
-       JMP RE6
-* SAVE EDGE LOST BY NEXT GETOBJ
-RE3    LDY EDGE
-       STY $1A
-       LDY EDGE+1
-       STY $1B
-       LDX $46      X
-       CPX #ON
-       BNE .4
-       LDA $47      Y
-       JSR PNTOBJ
-       LDY #2       SUPPORTING CAPACITY
-       LDA (MISC),Y
-       BNE .33
-       JMP RE75
-.33    LDX #UNDER
-       JSR CHKROOM
-       JSR FINDO    CAN WE REACH DEST?
-       JMP .6
-.4     CPX #IN
-       BNE .8
-* SEE IF A CAN BE PUT IN Y
-* CHECK CAPACITY, OBJS IN Y,&Y OPEN/CLOSED
-       LDA $47      Y
-       JSR PNTOBJ
-       LDY #4
-       LDA (MISC),Y WATERTIGHT?
-       STA TEMP3+2
-       LDY #1       CAPACITY
-       LDA (MISC),Y
-       BNE .5
-       JMP RE7      NO CAPACITY
-.5     LDX #HOLDS
-       JSR CHKROOM
-       JSR FINDD    CAN WE REACH INSIDE DEST?
-.6     BCC .7
-       RTS          NO
-.7     LDA ONOB
-       BNE .8
-       LDA $45      A
-       LDX #PARTOF
-       JSR GETOBJ
-       DEX
-       BMI .8
-       PLA
-       JMP PO
-.8     LDY #0
-       STY TEMP3+1  IN CASE OF ON
-       LDA $45      A
-       STA ($1A),Y
-       INY
-       LDA $46      X
-       PHA
-       STA ($1A),Y
-       INY
-       LDA TEMP+1
-       STA ($1A),Y
-       INY
-       LDA $47
-       STA ($1A),Y
-       JSR CHKEY
-       PLA          X
-       CMP #ON
-       BNE CIN
-* IF A ON Y, PUT A IN OBJ HOLDING Y
-* IF Y NOT HELD, PUT A IN Y & DELETE A ON Y
-ABYY   DEC DDON
-       LDA $47
-       LDX #IN
-       STX ALGOK
-       JSR GETOBJ
-       LDY $47
-       DEX
-       BMI .1
-       PLA
-       TAY
-.1     LDA $45
-       LDX #IN
-       JSR REPEDG
-       INC DDON     ->0
-       RTS
-CIN    CMP #IN
-       BEQ .0
-       JMP RSUC
-.0     LDA $45
-       CMP #ME
-       BNE .1
-       JSR MACT
-* IF MOVING OBJ, MOVE ALL OBJS ON IT
-* NOTE POSSIBLE RECURSION
-* A ON Y:
-*      DELETE A ON Y
-*      IF Y=ME THEN MAKVIS A
-*              ELSE MAKVIS Y
-* UNLESS DDON>0
-* IF MOVING OBJ, MOVE ALL OBJS ON IT
-.1     LDA DDON
-       BNE .3
-       LDA $45
-       LDX #ON
-       JSR GETOBJ
-.2     DEX
-       BMI .3
-       STX CURWORD
-       PLA
-       PHA
-       CMP #ME
-       BNE .23
-       LDA $45      MAKE OBJ THAT WAS ON ME VISIBLE, NOT ME
-.23    STA $10
-       JSR PNTOBJ
-       LDY #5
-       LDA (MISC),Y
-       BPL .25      VISIBLE
-       AND #$7F
-       STA (MISC),Y MAKVIS
-       PLA
-       PHA
-       CMP #ME
-       BEQ .25      NO MSG FOR ITEMS THAT WERE ON ME
-       LDA #99
-       JSR PMNOK
-.25    PLA
-       TAY
-       LDA $45
-       PHA
-       LDA #ON
-       PHA
-       TYA
-       PHA
-       JSR DELEDG
-       LDX CURWORD
-       BNE .2
-.3     LDA $45
-       PHA
-       LDX #UNDER
-       JSR GETOBJ
-       DEC DDON
-       INC ONOB
-.4     DEX
-       BMI .5
-       PLA
-       TAY
-       TXA
-       PHA
-       TYA
-       LDX #IN
-       LDY $47
-       JSR REPEDG
-       PLA
-       TAX
-       BNE .4
-.5     INC DDON     ->0 IF PRIMARY OBJ
-       DEC ONOB     ->0 IF PRIMARY OBJ
-* MOVE OBJS WHICH ARE PART OF THIS OBJ
-       PLA
-       LDX #PART
-       JSR GETOBJ
-       STX NONE
-CI6    DEC NONE
-       BPL CI7
-RSUC   CLC
-       RTS
-CI7    PLA
-       STA CURWORD
-       LDX #IN
-       JSR GETOBJ
-* LEAVE OBJ PART IS IN ON STACK
-       LDA #HOLDS
-       PHA
-       LDA CURWORD
-       PHA
-       JSR DELEDG
-       LDA CURWORD
-       PHA
-       LDA #IN
-       PHA
-       LDA #HOLDS
-       PHA
-       LDA $47      Y
-       PHA
-       JSR MAKEDG
-       LDA CURWORD
-       LDX #PART
-       JSR GETOBJ   DOES PART HAVE PART?
-       TXA
-       CLC
-       ADC NONE
-       STA NONE     PARTS OF PART GO TO SAME PLACE AS PART
-       JMP CI6
-RE6    LDA ALGOK
-       BNE RSUC
-       LDY /.7
-       LDA #.7
-       JMP OMSG
-.7     .US /YOU'VE ALREADY DONE THAT.@=/
-RE7    LDY /YCPI
-       LDA #YCPI
-RE72   LDX $47
-       STX $10      FOR PA
-       JMP OMSG
-YCPI   .DA #"$,YC
-       .US /IN <.@=/
-RE75   LDY /.1
-       LDA #.1
-       JMP RE72
-.1     .DA #"$,YC
-       .US /ON <.@=/
-YC     .US /YOU CAN'T PUT THINGS =/
-* NO ROOM FOR A IN/ON Y
-* IF NR FOR A IN Y, AND A ON Z AND Z IN Y, DEL A ON Z. SHAVES STACK TOP.
-* WHEN ASKED "PUT A ON B" & THERE'S NO ROOM FOR A,? NO ROOM
-* WHEN ASKED "PUT A ON B" & C IS ON A & THERE'S NO ROOM FOR C, ? NOTHING
-NR     LDA $46      X
-       CMP #IN
-       BNE .3
-       LDA $45      A
-       LDX #ON
-       JSR GETOBJ
-       DEX
-       BMI .3
-       STX CURWORD
-.1     PLA          Z
-       STA NONE
-       LDX #IN
-       JSR GETOBJ
-       PLA
-       CMP $47      Y
-       BNE .15
-       LDA $45      A
-       PHA
-       LDA #ON
-       PHA
-       LDA NONE     Z
-       PHA
-       JSR DELEDG
-.15    DEC CURWORD  ON ANY MORE OBJS?
-       BPL .1       YES
-       LDA $45      A
-       CMP CUROBJ
-       BEQ .3       MESSAGE IF A IS CUROBJ
-.2     CLC          FOR TRYCUR
-.25    RTS
-.3     LDA TRYCUR
-       BEQ .4
-       LDA CASEFRAME+2
-       LSR
-       BCS .4       FAILURE IF NOT GOTTEN
-       LDA CUROBJ
-       JSR PNTOBJ
-       LDY #0
-       LDA (MISC),Y SIZE
-       CMP #10      ARBITRARY #
-       BCS .25      MAKE NO NOISE BUT SET CARRY
-.4     LDY /.6
-       LDA #.6
-       LDX $47      Y
-       CPX #ME
-       BNE .5
-       LDY /.7
-       LDA #.7
-.5     JMP OMSG
-.6     .US /THERE'S NO ROOM.@=/
-.7     .US /YOU CAN'T CARRY THAT MUCH MORE.@=/
-TRYCUR .BS 1        >0=OK IF NOT GOTTEN IF BIG
-PO     STA $10
-       LDY /.1
-       LDA #.1
-       JMP OMSG
-.1     .US /IT'S PART OF >.@=/
-ALGOK  .HS 00       ALREADY GOTTEN OK.
-DDON   .HS 00       FF=DON'T DELETE A ON B WHEN PUTTING A IN Y
-ONOB   .HS 00     >0=A MOVED SINCE IT WAS STACKED ON ORIG A,NO PART CHECK
-OLDTAIL .BS 1
-CHKROOM STA TEMP3
-       LDA #0
-       STA .61
-       LDA $47      Y
-       JSR GETOBJ
-.1     DEX
-       BMI .3
-       PLA
-       PHA
-       JSR PNTOBJ
-       LDY #3
-       LDA (MISC),Y
-       LDY #0       FOR LATER
-       AND #$20     LIQUID IN DEST?
-       BEQ .2       NO
-       PLA
-       STA .61      ONLY 1 LIQUID
-       LDA (MISC),Y SIZE OF LIQ
-       STA .64
-       PHA
-.2     PLA
-       LDA (MISC),Y SIZE
-       CLC
-       ADC TEMP3+1
-       STA TEMP3+1  SUM OF SIZES OF CONTENTS
-       JMP .1
-.3     LDA $45
-       JSR PNTOBJ
-       LDY #3
-       LDA (MISC),Y
-       AND #$20     LIQUID?
-       BEQ .7       NO
-       LDA $46      X
-       CMP #IN
-       BNE .5       CAN ONLY PUT LIQUIDS IN THINGS
-       LDA TEMP3+2  BESIDES, TEMP3+2 ONLY STORED FOR "IN"
-       AND #8       WATERTIGHT?
-       BNE .6       Y
-       LDX #106     NOT WATERTIGHT
-       LDA $47      Y
-       STA $10
-.4     PLA
-       PLA
-       TXA
-       JMP PMNOK
-.5     LDA $45
-       STA $10
-       LDX #IN
-       JSR DELAX    ERASE EDGE
-       LDX #105     EVAPORATES
-       BNE .4
-* PUTTING LIQUID IN CONTAINER:
-* 1. CAN'T IF OTHER LIQUID IS PRESENT (.61=$20)
-* 2. IF NOT ENUF ROOM, CREATE SMALLER LIQUID OBJ & PUT IT IN
-* (WE KNOW OBJ HAS >0 CAPAC)
-.6     LDX #116     THERE'S ANOTHER LIQUID IN IT
-       .HS A9       LDA
-.61    .BS 1        # OF LIQ IN DEST, ELSE 0
-       BEQ .67      NO
-       SEC
-       SBC $45
-       CLC
-       ADC #5
-       CMP #10      IF <5 APART, COMBINE 2 LIQUIDS
-       BCS .4
-* COMBINE LIQUID IN DEST & OBJ LIQUID BY DELETING DEST LIQ,
-* ADDING ITS SIZE TO OBJ, & SBCing DEST LIQ'S SIZE FROM CONTENTS SIZE
-       LDA TEMP3+1
-       CMP TEMP3
-       BEQ .73      NO ROOM: CAP IS FULL
-       SEC
-       SBC .64      SIZE OF LIQ IN DEST
-       STA TEMP3+1
-       LDY #0
-       CLC
-       LDA (MISC),Y
-       .HS 69       ADC
-.64    .BS 1        SIZE OF LIQ IN DEST
-       STA (MISC),Y
-       LDA .61
-       LDX #IN
-       STY .61
-       JSR DELAX
-       LDA $45
-       JSR PNTOBJ   WIPED BY DELAX
-.67    INC .61      <=1:MARK LIQUID
-.7     CLC
-       LDY #0
-       LDA TEMP3+1  MUST RELOAD IN CASE NO OBJS IN DEST
-       ADC (MISC),Y A=SIZE [(OBJS IN Y)+A]+1
-       BCC .71      =<$FF
-       SBC TEMP3    CAPACITY
-       JMP .72
-.71    SEC
-       SBC TEMP3    CAPACITY
-       BCC CR9
-       BEQ CR9
-.72    DEC .61      LIQUID?
-       BEQ .75      YES
-.73    PLA
-       PLA
-       JMP NR       NO ROOM
-.75    STA (MISC),Y SIZE ORIG LIQUID=SIZE0-CAP+[TEMP3+1]
-* ORIG LIQ STAYS WHERE IT IS
-       LDA $45
-       STA .90+1    SAVE THIS OBJ#
-.8     DEC $45      A:SEARCH FOR NEW, UNUSED OBJ OF SAME TYPE
-       LDA $45
-       STA .61      TEMP STORAGE
-       JSR PNTOBJ
-       LDY #3
-       LDA (MISC),Y
-       AND #$20     LIQUID?
-       BNE .8       YES,CONT
-* .61: LAST OBJ BEFORE 1ST LIQUID
-* NOTE:ASSUMES NO 2 LIQUID TYPES ARE SEQUENTIAL
-.85    INC $45
-       LDA $45
-       SEC
-       SBC .61
-       CMP #NLIQ+1  #OBJS OF EACH LIQUID TYPE
-       BCS C95      NO LIQUID OBJS LEFT: ERROR, NO NEW EDGE
-       LDA $45
-       LDX #IN
-       JSR GETOBJ
-       PLA
-       DEX          OBJ IN SOMETHING?
-       BEQ .85      YES
-       PHA
-       LDA $45
-.90    CMP #0       SAME AS ORIG. OBJ?
-       BEQ .85      YES
-       JSR PNTOBJ
-       SEC
-       LDA TEMP3
-       SBC TEMP3+1  A<=SIZE OF NEW OBJ
-       LDY #0
-       STA (MISC),Y SIZE
-       LDX #IN
-       LDY $47
-       PLA
-       PLA
-       LDA $45
-       JMP REPEDG
-CR9    LDA #0
-       STA TEMP3+1
-       LDA $47      Y
-C95    RTS
-EREDG  LDY #3
-       LDA #0
-.8     STA (EDGE),Y  DELETE EDGE
-       DEY
-       BPL .8
-       RTS
-* CALC 2ND POINTER IN EDGE FROM 1ST POINTER
-* x=X+1 IF X IS ODD
-*   X-1 IF X IS EVEN
-* NOTE THAT 1-WAY EDGES (I.E. BY) MUST HAVE 1 UNUSED ADJACENT NUMBER
-* SO REPLACING DOESN'T CREATE A FALSE EDGE
-CLCPNT CPX #BY
-       BCS .2
-       TXA
-       INX
-       LSR
-       BCC .0
-       DEX
-       DEX
-.0     TXA
-.2     RTS
-*--------------------------------
-* MAKE AN EDGE BETWEEN OBJECTS
-* BEFORE CALLING, PUSH OBJ,POINTER,POINTER,OBJ ON STACK
-MAKEDG PLA
-       TAY
-       PLA
-       STA MISC+1
-       INY
-       BNE .0
-       INC MISC+1
-.0     STY MISC
-       LDA FRFLG    DO WE KNOW LOC OF AN EMPTY EDGE?
-       BEQ .3       NO
-       LDA FREE
-       STA EDGE
-       LDA FREE+1
-       STA EDGE+1
-       INC FRFLG
-       BEQ .2       ALWAYS
-.3     STA EDGOFFSET+1
-       STA EDGCMP+1
-       JSR FINEDG  FIND EMPTY EDGE SLOT
-       BCC .2
-       LDA EDGEND
-       ADC #3       CARRY SET
-       STA EDGEND
-       BCC .2
-       INC EDGEND+1
-.2     LDY #3
-.1     PLA
-       STA (EDGE),Y
-       DEY
-       BPL .1
-       BMI DELEND   RTS
-* SAVES EDGES IN ORDER PUSHED
-*--------------------------------
-* DELETE AN EDGE
-* BEFORE CALLING, PUSH OBJ1,POINTER1->2,AND OBJ2 ON STACK
-DELEDG PLA
-       TAY
-       PLA
-       STA MISC+1
-       INY
-       BNE .0
-       INC MISC+1
-.0     STY MISC
-       LDA #3
-       STA EDGOFFSET+1
-       PLA          OBJECT POINTED TO
-       STA EDGCMP+1
-       PLA          POINTER
-       STA TEMP
-       JSR FINEDG
-.1     BCS .3       TRY LOOKING FOR 'BACKWARD' EDGE
-       LDY #1       POINTER TO OBJECT FOUND
-       LDA TEMP     POINTER PASSED
-       CMP (EDGE),Y
-       BEQ .2
-.15    JSR TRYAGN
-       JMP .1
-.2     LDY #0       OBJECT POINTING
-       PLA
-       CMP (EDGE),Y
-       BEQ DELEXT
-       PHA
-       JMP .15
-.3     LDA #0
-       STA EDGOFFSET+1
-       JSR FINEDG
-.4     BCS DELFAL   DOESN'T EXIST
-       LDY #2       POINTER TO OBJECT FOUND
-       LDA TEMP     POINTER PASSED
-       CMP (EDGE),Y
-       BEQ .5
-.45    JSR TRYAGN
-       JMP .4
-.5     LDY #3       OBJECT POINTING
-       PLA
-       CMP (EDGE),Y
-       BEQ DELEXT
-       PHA
-       JMP .45
-DELEXT JSR EREDG
-       LDY #1
-.9     LDA EDGE,Y   COPY LOC OF FREE EDGE
-       STA FREE,Y
-       DEY
-       BPL .9
-       STY FRFLG
-       CLC
-       .HS B0       BCS
-DELFAL PLA
-DELEND JMP (MISC)   RTS
-*--------------------------------
-* GET ALL VALUES POINTED TO
-* ON CALLING, A=OBJ X=POINTER
-* AFTER RETURN, X=# OF OBJECTS ON STACK
-GETOBJ STA EDGCMP+1
-       PLA
-       TAY
-       PLA
-       STA MISC+1
-       STA GCALLD   EXIT THRU DELEND
-       INY
-       BNE .0
-       INC MISC+1
-.0     STY MISC
-       JSR GETEDG
-.1     LDA (EDGE),Y
-       PHA
-       INX
-       DEY          TEST WHICH PLACE TO CALL
-       BMI .2
-       JSR G2
-       JMP .1
-.2     JSR G4
-       JMP .1
-*--------------------------------
-* ON EXIT C=0 IF SUCCESS
-GETEDG STX TEMP
-       CPX #BY
-       TXA
-       LDX #0       INIT COUNT
-       BCS .0       SEARCH BOTH WAYS FOR BY
-       LSR
-       BCS G25      ODD POINTERS ARE 2ND POINTER
-.0     STX EDGOFFSET+1   0
-       JSR FINEDG
-       BCS G22
-G1     LDY #1
-       LDA (EDGE),Y POINTER
-       CMP TEMP
-       BEQ G6
-G2     JSR TRYAGN
-       BCC G1
-G22    LDA #BY
-       CMP TEMP
-       BCS G5
-G25    LDA #3
-       STA EDGOFFSET+1
-       JSR FINEDG
-       BCS G5
-G3     LDY #2
-       LDA (EDGE),Y POINTER
-       CMP TEMP
-       BEQ G7
-G4     JSR TRYAGN
-       BCC G3
-G5     PLA
-       PLA
-       LDA GCALLD
-       BNE DELEND
-       RTS          TO CALLER OF CALLER, C=1
-G6     LDY #3       FOR GETOBJ
-       .HS 2C       BIT
-G7     LDY #0
-       CLC
-       RTS
-GCALLD .BS 1        0=RTS WHEN NOT FOUND
-*--------------------------------
-* LOCATE AN EDGE OR EMPTY EDGE
-FINEDG LDA #EDGES
-       STA EDGE
-       LDA /EDGES
-       STA EDGE+1
-EDGOFFSET LDY #0
-       LDA (EDGE),Y
-EDGCMP CMP #0
-       BEQ FINEND
-TRYAGN LDA EDGE
-       CLC
-       ADC #4
-       STA EDGE
-       LDA EDGE+1
-       ADC #0
-       STA EDGE+1
-       CMP EDGEND+1
-       BNE EDGOFFSET
-       LDA EDGE
-       CMP EDGEND
-       BNE EDGOFFSET
-       SEC          FAILURE
-       .HS 90       BCC
-FINEND CLC
-       RTS
-*--------------------------------
-WNUM   .BS 2        WORD#
-CURWORD .BS 1
-*[MOVE]SPECACTS
-MACT   LDY $47
-       STY LOC
-       LDA ACTOR
-       CMP #ME
-       BNE .1
-       STY ACLOC
-.1     LDY #$FF
-.0     INY
-       LDA .9,Y
-       BEQ .6       NO ACT
-       CMP $47
-       BNE .0
-       LDA VDAT+1
-       PHA
-       LDA VDAT+2
-       PHA
-       LDX #3
-.2     LDA $45,X
-       STA .7,X
-       DEX
-       BPL .2
-       TYA
-       ASL
-       TAY
-       LDA MTAB,Y
-       STA VDAT+1
-       LDA MTAB+1,Y
-       STA VDAT+2
-       JSR SPCACT
-       PLA
-       STA VDAT+2
-       PLA
-       STA VDAT+1
-       LDY #3
-.5     LDA .7,Y
-       STA $45,Y
-       DEY
-       BPL .5
-.6     RTS
-.7     .BS 4        TEMP $45-48
-.9     .DA #STAIR1,#STAIR3,#HALL4,#HALL2,#STAIR4,#CAFE,#KITCH,#FR,#CRAWL2,#CELL,#HALL12,#HALL10,#HALL11,HALL13
-MTAB   .DA .15,.20,.25,.30,.35,.40,.45,.50,.55,.60,.65,.70,.70,.70
-.15    .DA #NULL,#ADEL,#RUG,#ON,#DOOR1,#AREP,#DOOR1,#IN,#STAIR1,#MAKVIS,DOOR1
-.20    .DA #NULL,#AREP,#DOOR1,#IN,#STAIR3,#AREP,#DOOR6,#IN,#STAIR3,#AREP,#DOOR6,#ADJEC,#NERN,#$80,#BITSET,#DBUT,0,#$80,#ADEL,#RUG,#ON,#DOOR1,#ASBIT,#DOOR1,0,#$80,#AJSR,.21,#0
-.21    LDA #RUG
-       PHA
-       LDA #ON
-       PHA
-       LDA #UNDER
-       PHA
-       LDA #DOOR1
-       PHA
-       JSR MAKEDG
-       RTS
-.25    .DA #NULL,#AREP,#DOOR2,#IN,HALL4
-.30    .DA #NULL,#AREP,#DOOR2,#IN,#HALL2,#AREP,#DOOR3,#IN,HALL2
-.35    .DA #NULL,#AREP,#DOOR3,#IN,STAIR4
-.40    .DA #NULL,#AREP,#DOOR5,#IN,CAFE
-.45    .DA #NULL,#AREP,#DOOR5,#IN,KITCH
-.50    .DA #NULL,#AREP,#DOOR6,#IN,#FR,#AREP,#DOOR6,#ADJEC,SERN
-.55    .DA #ZERO,CVIS,#AINC,CVIS,#AMSG,#121,#MOVETO,MACH  WOULD HAVE TO DISPLAY IF CRAWL WEREN'T DARK
-.60    .DA #NULL,#AREP,#DOOR7,#IN,#CELL,#AREP,#DOOR7,#ADJEC,SERN
-.65    .DA #NULL,#AREP,#DOOR7,#IN,#HALL12,#AREP,#DOOR7,#ADJEC,#NERN,#MAKVIS,#BULB2,#GOTO,.71
-.70    .DA #NULL,#AREP,#DOOR8,#IN,#VLOC,#AREP,#DOOR9,#IN,#VLOC,#ASBIT,BULB2,$8000
-.71    .DA #ADEL,#BULB2,PARTOF,#AREP,#BULB2,#IN,#VLOC,#AREP,#BULB2,#PARTOF,VLOC
=gennum
-*
-SAVEGENNUM3
-* GENERATE NUMTAB
-CNT    .EQ TEMP
-INDEX  .EQ TEMP+2
-GNM    LDA #11      1ST WORD#
-       STA NUMTAB
-       STA CNT
-       LDA #0
-       STA NUMTAB+1
-       STA CNT+1
-       LDA #2
-       STA INDEX
-       LDA #A
-       STA MISC
-       LDA /A
-       STA MISC+1
-       LDY #0
-       BEQ .22
-.2     JSR INY
-.22    LDA (MISC),Y SEARCH FOR END OF STRING
-       BMI .3       CHAR OR EOL
-.23    BEQ .25      NULL WORD
-       CMP #SYN3+1
-       BCS .25
-       JSR INY      PARTS <= SYN HAVE 1 PARAM
-.25    JSR INY      SEARCH FOR NEXT STRING
-       LDA (MISC),Y
-       BPL .23      ANOTHER TYPE
-       INC CNT
-       BNE .3
-       INC CNT+1
-.3     CMP #EOL
-       BNE .2
-.4     LDA CNT
-       LDX INDEX
-       STA NUMTAB,X
-       STA $50
-       INX
-       LDA CNT+1
-       STA NUMTAB,X
-       STA $51
-       INX
-       STX INDEX
-       JSR $FF4A
-       LDA #$A0
-       JSR $FDED
-       JSR PD
-       JSR $FF3F
-       CPX #26*2
-       BCC .2
-* PRINT NUMS & WORDS
-PNW    LDA #11
-       STA CNT2
-       LDA #0
-       STA CNT2+1
-.1     JSR $FD8E
-       LDX CNT2
-       LDA CNT2+1
-       JSR PDEC
-       LDA #$A0
-       JSR $FDED
-       LDA #$A0
-       JSR $FDED
-       LDY CNT2+1
-       LDA CNT2
-       JSR PRWRD
-       INC CNT2
-       BNE .2
-       INC CNT2+1
-.2     LDA CNT2
-       CMP CNT
-       LDA CNT2+1
-       SBC CNT+1
-       BCC .1
-       RTS
-CNT2   .BS 2
-PD     LDA $51
-       LDX $50
-PDEC   LDY $C081
-       JMP $ED24
=handler
-*
-SAVEHANDLER41,S6,D1
-HANDLER JSR CHKEY
-       BIT DBGFLG
-       BPL H10
-       JSR FD8E
-       LDY /AC
-       LDA #AC
-       JSR PS
-       LDA ACTOR
-       JSR PROBJ
-       JSR FD8E
-       LDA WTFIN
-       CMP #VT
-       BNE .3       NO OBJS
-       LDY /OL
-       LDA #OL
-       JSR PS
-       LDX OBJLIST
-       BEQ .2       NO OBJS
-       DEC LSTCOL   DON'T PRINT IN LAST COLUMN
-       LDY #0
-.0     TXA
-       STY TNPNT
-       JSR PROBJ
-       LDY TNPNT
-       INY
-       LDX OBJLIST,Y
-       BEQ .1
-       LDA #",
-       JSR FDF0
-       CPY #20
-       BNE .0
-.1     INC LSTCOL
-.2     JSR FD8E
-.3     LDY #1
-.4     LDA SDEST,Y
-       BEQ .5
-       PHA
-       STY TNPNT
-       LDA SLO,Y
-       PHA
-       LDA SHI,Y
-       TAY
-       PLA
-       JSR PS
-       PLA
-       JSR PROBJ
-       JSR FD8E
-       LDY TNPNT
-.5     DEY
-       BPL .4
-H10    LDA ACTOR
-       STA $10      IN CASE > REFUSES
-       CMP #PROF    PROF OR PRISONER WILL ALWAYS DO WHAT YOU SAY
-       BCC .7       NO
-       CMP #PRIS3+1
-       BCC .8       YES
-.7     EOR #ME      I'LL DO WHATEVER I SAY
-       BEQ .9
-       LDA CASEFRAME+2
-       AND #8       WILL CHAR DO IT?
-       BNE .8       YES
-       LDA DQ
-       BEQ .9       CHAR DOES IT OF HIS OWN VOLITION
-       LDA #251
-       JMP PMSG     BUZZ OFF
-.8     LDA #0
-.9     STA CNTOBJ
-       STA AFTMSG
-       JSR SKPOBJ
-       LDA WTFIN    VERB
-       CMP #VT
-       BEQ .15
-       JSR DOOBJ    HAVE SAME STACK POINTER AS VT
-       JMP DOIT
-.15    LDY #2
-.11    LDA VDAT,Y
-       STA VTEMP-1,Y
-       DEY
-       BNE .11      NOT VDAT
-*FOR VT,LOOP ONCE FOR EACH OBJ
-       LDY #0
-.12    LDA OBJLIST,Y
-       BEQ .20
-       STA CUROBJ
-       STA $10      FOR ANY PRINTING
-       STY TEMPIND
-       LDY TWOOBJ
-       BEQ .13
-       JSR OBJCOL
-.13    JSR DOOBJ
-       LDY TEMPIND
-       INY
-       BNE .12
-.20    DEY
-       BNE .25      >1 OBJ,A=0
-       LDA OBJLIST
-.25    STA LSTOBJ
-* _ DO _ _ _ _ _ _
-* ACTUALLY, NO MULTIPLE-OBJECT COMMAND WILL EVER BE "DO"ed
-* BUT WHAT THE HECK
-DOIT   LDA DOPNT    EXEC ANOTHER COMMAND?
-       BNE .31
-       RTS
-.31    LDX #7
-.35    LDA .38-1,X
-       STA .37+1
-       LDA .39-1,X
-       STA .37+2
-       >PLA DOSTK,DOPNT  WIPES Y
-.37    STA $FFF
-       DEX
-       BNE .35
-       STX TWOOBJ        1 OBJ
-       STX OBJLIST+1     1 OBJ
-       TXA
-.40    INX
-       STA NOUNLIST,X    0
-       CPX #20
-       BNE .40
-       JSR GAL      GET ACLOC
-       JSR TV
-       JSR NOK
-       LDA #VT      3
-       STA WTFIN
-       LDA OBJLIST
-       BEQ .42      VI,VP
-       STA NOUNLIST
-       JSR CHECKOBJ
-       LDA NOUNLIST
-       BEQ DOIT     NOUN ELIMINATED
-.41    LDA ACTOR
-       CMP #ME
-       BEQ .44
-       LDA ACLOC
-       CMP LOC
-       BNE .44
-       JSR PRDO     PRINT WHAT CHARS IN ROOM DO (CHARS)
-.44    JMP HANDLER
-.42    DEC WTFIN    2=VI
-       LDA SPLACE
-       BEQ .41
-       DEC WTFIN    1=VP
-       BNE .41
-.38    .DA #ACTOR,#WVERB,#OBJLIST,#SPM,#SDEST,#SINSTR,#SPLACE
-.39    .DA /ACTOR,/WVERB,/OBJLIST,/SPM,/SDEST,/SINSTR,/SPLACE
-CUROBJ .BS 1        CURRENT OBJ
-SIZE   .BS 1
-LSTOBJ .BS 1        USED BY PRONOUN "IT"
-VTEMP  .BS 2        VDAT TEMP
-OKS    .US /O%K.@=/
-INSOM  .BS 1        INCed BY FINDO IF OBJ IS IN SOMETHING
-DOOBJ  JSR CHKEY
-       LDA DOPNT
-       BNE .0
-       LDY /OKS
-       STY RESHI+1
-       LDY #OKS
-       STY RESLO+1
-.0     LDA WTFIN
-       CMP #VT
-       BEQ H1
-       JMP G85      ONLY VT GETS OBJ
-H1     LDA #0
-       STA TEMP3+1  FOR FINDO
-       STA INSOM    FOR FINDO
-       STA .77
-       LDA CASEFRAME
-       BMI .0       OBJ MAY BE ABSENT
-       LDA CUROBJ
-       CMP ACLOC
-       BEQ .0       CAN ALWAYS REACH LOC
-       JSR FINDO    SEE IF YOU CAN REACH OBJ
-       BCS .1       NO
-* HERE WE EXIT IF OBJ DOESN'T EXIST.
-* THIS IS USUALLY THE BUSINESS OF CHECKOBJ,
-* BUT A LIQUID OBJ MAY BE DELETED AFTER CHECKOBJ.
-       LDA INSOM    OBJ EXISTS?
-       BEQ .1       NO
-.0     LDA CASEFRAME+3   GET OBJ?
-       BMI .3            YES
-.2     JMP G81
-.1     JMP .10
-.3     LDA CUROBJ
-       JSR PNTOBJ
-       LDY #0
-       LDA (MISC),Y
-       STA SIZE
-       LDY #3
-       LDA (MISC),Y
-       AND #$20     LIQUID?
-       BEQ .5       NO
-       LDA CUROBJ
-       LDX #IN
-       JSR GETOBJ
-       PLA
-       STA OLDLOC   FOR OBJWASIN (MAYBE SHOULD DELETE THESE LINES)
-       LDA WVERB
-       CMP #GET
-       BNE .2       DON'T TRY TO GET LIQUID
-       LDA #107     TELL ME WHERE TO PUT IT.
-       JMP PMSG
-.5     LDY #$FF
-.6     INY
-       LDA .20,Y
-       BEQ .7
-       CMP CUROBJ
-       BNE .6
-       LDX .21,Y
-       STX .77
-       TYA
-       ASL
-       TAY
-       LDA .23,Y
-       STA VDAT+1
-       LDA .23+1,Y
-       STA VDAT+2
-       TXA
-       BNE .7       SPCACT IF GOTTEN
-       JSR SPCACT
-.7     LDA WVERB
-       CMP #REM     REMOVE DOESN'T TAKE, JUST CHECKS FOR SPCACT
-       BEQ .80
-       INC ALGOK
-       INC TRYCUR
-       LDA CUROBJ
-       LDX #IN
-       LDY ACTOR
-       JSR REPEDG
-       DEC TRYCUR
-       DEC ALGOK
-       LDA OLDTAIL
-       STA OLDLOC   USED BY TEST AS TO WHERE OBJ WAS
-       BCC .79
-       LDA CASEFRAME+2
-       LSR
-       BCC .80      OK IF OBJ NOT GOTTEN
-       LDA SIZE
-       BEQ .80      SIZE=0:STEAM,GRAFFITI,ETC.
-       CMP #MGET-1
-       BCS .80      OK IF NOT GOTTEN SINCE TOO BIG
-.10    JMP RES
-.20    .DA #BAR,BOOK4
-.21    .DA #1,#1    0=SPCACT ON ATTEMPT,1=ONLY SPCACT IF GOTTEN
-.23    .DA .35,.40
-.35    .DA #NULL,#POKE,BARREM,1  UNBAR TRAPDOOR
-.40    .DA #ZERO,AFND,#AINC,AFND,#AREP,#ARR,#IN,#SHELF,#AREP,#ARR,#PARTOF,#SHELF,#AMSG,66  MSG IF BOOK IS REMOVED
-.77    .BS 1
-.79    CMP ACTOR
-       BEQ .80      ALREADY HAD IT
-       LDA WVERB
-       CMP #GET
-       BEQ .80      GET ALWAYS GETS
-       LDA #191     (TAKEN)
-       JSR PMSG
-.80    LDA .77
-       BEQ G81      SPCACT DONE BEFORE GETTING
-       JSR SPCACT
-G81    LDY #2
-.83    LDA VTEMP-1,Y  POINT VDAT TO START OF ACTION DATA
-       STA VDAT,Y
-       DEY
-       BNE .83
-G85    LDA CASEFRAME+3
-       ASL          SPECIAL ACTIONS?
-       BPL .90
-       JSR SPCACT
-       LDA CASEFRAME+3   DON'T SAVE ON STACK IN CASE SUB PLA PLA RTS's
-       ASL
-.90    ASL          JSR?
-       BPL EDGACT
-       JSR VDAT
-       STA .95+1
-       JSR VDAT
-       STA .95+2
-.95    JSR 0
-       LDA CASEFRAME+3
-       ASL
-       ASL
-EDGACT ASL          ADD EDGE?
-       BPL .40
-       PHA
-       JSR GEDGE
-       PHA
-       JSR GEDGE
-       PHA
-       TAX
-       JSR CLCPNT
-       PHA
-       JSR GEDGE
-       PHA
-       JSR MAKEDG
-       PLA
-.40    ASL          DELETE EDGE?
-       BPL .50
-       PHA
-       JSR DEL
-       PLA
-.50    ASL          REPLACE EDGE?
-       BPL .60
-       PHA
-       LDA WVERB
-       PHA
-       CMP #PUT
-       BNE .55
-       INC ALGOK    PUT IN ME ALREADY DONE, PUT IN OTHER CAN'T BE AL GOT
-.55    JSR DOREP
-       PLA
-       CMP #PUT
-       BNE .57
-       DEC ALGOK
-.57    PLA
-.60    ASL          ZERO BITS?
-       BPL .70
-       PHA
-       LDA CUROBJ
-       JSR ZBIT
-       PLA
-.70    ASL          SET BITS?
-       BPL RES
-       LDA CUROBJ
-       JSR SBIT
-RES    LDA ACTOR
-       CMP #ME
-       BNE RERTS    NO MSG FOR ACTIONS BY OTHERS
-RESHI  LDY /OKS     MESSAGE MAY BE CHANGED BY ATTEMPT
-RESLO  LDA #OKS
-       JSR PS
-       LDA AFTMSG
-       BEQ RERTS
-       JMP PMSG
-RERTS  RTS
-AFTMSG .BS 1
-ZBIT   JSR PNTOBJ
-       LDY #3
-.1     JSR VDAT
-       STA TEMP     FOR BITAAA
-       AND (MISC),Y ZERO BIT
-       JSR BITAAA
-       INY
-       CPY #6
-       BNE .1
-       RTS
-SBIT   JSR PNTOBJ
-       LDY #3
-.1     JSR VDAT
-       STA TEMP     FOR BITAAA
-       ORA (MISC),Y SET BIT
-       JSR BITAAA
-       INY
-       CPY #6
-       BNE .1
-       RTS
-* SEE IF BITS ARE ALREADY AS ASKED
-BITAAA CMP (MISC),Y
-       BEQ .10
-       STA (MISC),Y
-.0     RTS
-.10    LDA TEMP
-       STY TEMP
-       CPY #5
-       BNE .20
-       LDX #0
-       CMP #%10111111    FIX
-       BEQ .50
-       INX
-       CMP #%01000000    BREAK
-       BEQ .50
-       INX
-       CMP #%00100000    BURN
-       BEQ .50
-       RTS
-.20    CPY #4
-       BNE .0
-       LDX #3
-       CMP #%00100000    OPEN
-       BEQ .50
-       INX
-       CMP #%11011111    CLOSE
-       BEQ .50
-       INX
-       CMP #%00010000    UNLOCK
-       BEQ .50
-       INX
-       CMP #%11101111    LOCK
-       BEQ .50
-       INX
-       CMP #%01000000    PRIME
-       BEQ .40
-       INX
-       CMP #%10111111    UNPRIME
-       BNE .0
-.40    LDY #3
-       LDA (MISC),Y
-       AND #8       LIGHT?
-       BEQ .60      NO
-.50    STX .90
-       LDY /.70
-       LDA #.70
-       JSR OMSG
-.60    LDY TEMP
-       RTS
-.70    .US /IT'S ALREADY +/
-       .DA .80
-* NOTE THIS SUB NEVER RETURNS TO PRINT
-.80    PLA
-       BNE .80
-       PLA
-       BNE .80
-       STY $24
-       LDA .90
-       JSR PADJ     REAL ADJ
-       LDA #".
-       JSR FDF0
-       JMP FD8E
-.90    .BS 1
-OBJCOL LDY ACTOR
-       CPY #ME
-       BNE .5       DON'T PRINT FOR OTHER ACTORS
-       LDY #2
-       STY SHIFT
-       JSR PROBJ
-       LDA #":
-       JSR FDF0
-       INC $24
-.5     RTS
-* FINDD:FIND IF DEST IS REACHABLE
-* FINDO:SEE IF OBJ IS REACHABLE
-* ENTER BOTH WI 0 IN TEMP3+1 AND OBJ/DEST IN A
-FINDD  CMP ACLOC
-       BEQ FID
-       TAX
-       JSR PNTOBJ
-       LDY #3
-       LDA (MISC),Y
-       AND #4       OPENABLE?
-       BEQ .2       NO
-       INY
-       LDA (MISC),Y
-       AND #$20     OPEN?
-       BNE .2
-       STX TEMP3+1  CLOSED OBJ
-.2     TXA
-FINDO  LDX #IN
-       JSR GETOBJ
-       DEX
-       BMI FID      OBJ NOT IN LOC:ONLY MOVEMENT OR SPECIAL ACTION
-       INC INSOM    SO DOOBJ DOESN'T PROCESS NONEXISTENT OBJS
-       PLA
-       BNE FINDD    ALWAYS
-FID    LDA TEMP3+1
-       BNE IC
-       CLC
-       RTS
-IC     STA $10
-       STA CNTOBJ
-       LDY /.2
-       LDA #.2
-       JMP OMSG
-.2     .US /> IS CLOSED.@=/
-* CONDITION#,COND PARMS,[AND/OR,COND,CP]/[ACTION#,ACT PARMS(,#$7F,ACTION#,ACT PARMS)(,#$80,CND,..),0]  
-* AND=00 OR=80 ELSE=7F
-* ELSE-IF REPLACED BY ELSE-AND
-ELSE   .EQ $7F
-SPCACT LDA #$FF
-       STA VAR      VAR NOT BOUND
-       STA VAR+1
-.31    JSR VDAT     GET CONDITION
-       TAY
-       BEQ .49      NO CNDS OR ACTS, USEFUL ONLY FOR 1ST BYTE
-       JSR TRYCND
-       BNE .39      FAILURE
-.32    JSR VDAT     GET ACTION
-       ASL
-       BNE .35      ACTION
-       BCC .31      AND
-.34    JSR VDAT
-       JSR TRYCND   SKIP OR COND
-       JSR VDAT
-       ASL
-       BEQ .34      AND/OR,SKIP
-.35    TAY
-       LDA ACTTAB-2,Y
-       STA .37+1
-       LDA ACTTAB-1,Y
-       STA .37+2
-.37    JSR 0        EXECUTE ACTION
-       JSR VDAT     ANOTHER ACTION?
-       CMP #$7F     ELSE
-       BEQ .39
-       ASL          SET Z
-       BNE .35      YES
-       BCS .31      ANOTHER COND/ACT SET
-       RTS
-* COND FAILED
-.39    JSR VDAT
-       TAY
-       BMI .31      OR
-       BNE .43      ACTION,SKIP IT
-       JSR VDAT
-       JSR TRYCND   ADVANCE POINTER
-       JMP .39
-.42    LSR
-.43    TAY
-       LDX ACTLEN-1,Y #PARMS TO SKIP
-.44    JSR VDAT
-       DEX
-       BPL .44      VDAT X+1 TIMES
-       CMP #$7F     ELSE
-       BEQ .32
-       ASL
-       BNE .42      ANOTHER ACTION
-       BCS .31      ANOTHER PAIR
-.49    RTS
-* TRY CONDITION:ON EXIT Z=1 IF SUCCESS
-TRYCND LDY #$60     RTS
-       STY .3
-       CMP #$40     COND+$40=NOT COND
-       BCC .1
-       SBC #$40
-       LDY #$8      PHP
-       STY .3
-.1     ASL          WASTE A BYTE FOR CONVENIENCE
-       TAY
-       LDA CNDTAB-2,Y
-       STA .2+1
-       LDA CNDTAB-1,Y
-       STA .2+2
-       JSR VDAT     GET 1ST PARM
-.2     JSR 0
-.3     PHP
-       PLA
-       EOR #2       Z=NOT Z
-       PHA
-       PLP
-       RTS
-* SUBST CERTAIN #S IN EDGE SPECS
-* WI SLOTS
-GEDGE  JSR VDAT
-       CMP #VY
-       BCC .2
-       TAY
-       LDA .3-VY,Y
-       STA .1+1
-       LDA .4-VY,Y
-       STA .1+2
-.1     LDA $FFF     SLOT
-.2     RTS
-.3     .DA #VAR+1,#VAR,#ACTOR,#LOC,#SDEST,#SPM,#SINSTR,#CUROBJ
-.4     .DA /VAR+1,/VAR,/ACTOR,/LOC,/SDEST,/SPM,/SINSTR,/CUROBJ
-VAR    .HS FFFF     BOUND BY CND, USED BY CND OR ACTION.
-* BINDING ERASED WHEN SPCACT CALLED
-* MAKE SURE YOU KNOW WHEN YOU'RE BINDING IT & WHEN IT'S BOUND.
-*VARIABLES USED IN EDGE SPECIFICATIONS. FILL WI SLOT VALUES
-VOBJ   .EQ $FF
-VINSTR .EQ $FE
-VPM    .EQ $FD
-VDEST  .EQ $FC
-VLOC   .EQ $FB
-VACT   .EQ $FA
-VX     .EQ $F9      BOUND BY ISEDG,ITIN
-VY     .EQ $F8
-AC     .US /ACTOR:=/
-OL     .US /OBJECT(S):=/
-SLO    .DA #PDEST,#PINS
-SHI    .DA /PDEST,/PINS
-PDEST  .US /DESTINATION:=/
-PINS   .US /INSTRUMENT:=/
-* EXECUTE INLINE SPECACT
-* JSR INLINE, RETURN ADDR, CODE
-* CAN'T BE JMPed TO
-* BUG: CRASH IF RECURSION TOO DEEP
-INLINE >PSHW VDAT+1,VSTK,VPNT
-       PLA
-       TAY
-       PLA
-       STA VDAT+2
-       INY
-       BNE .1
-       INC VDAT+2
-.1     STY VDAT+1
-       LDY .9       UNHURT BY VDAT
-       JSR VDAT     GET RETURN ADDR
-       STA .7,Y
-       JSR VDAT     & ADVANCE VDAT TO CODE
-       STA .8,Y
-       INC .9
-       JSR JSRSPC   EXTRA LEVEL SO SKIP WORKS
-       >PLLW VDAT+1,VSTK,VPNT
-       DEC .9
-       LDY .9
-       LDA .7,Y
-       STA .3+1
-       LDA .8,Y
-       STA .3+2
-.3     JMP 0
-.7     .BS 12       RTS STACK
-.8     .BS 12
-.9     .BS 1        RTS POINTER
-VSTK   .BS 22       12 LEVELS
-VPNT   .BS 1
-* CALL JSRSPC FOR SKIP TO RETURN TO CALLER
-JSRSPC JSR SPCACT
-       RTS
=inmate
-       .LISTOF
-*
-SAVEINMATE,S6,D2
-*--------------------------------
-* INMATE
-* PHILIP GOETZ 1986-1988
-*--------------------------------
-PROD   .EQ 1        1=PRODUCTION ASSEMBLY
-*EQUs FROM PACK
-TABTAB .EQ $7400
-SETTAB .EQ TABTAB+34
-KEYTAB .EQ SETTAB+2
-FINAL  .EQ KEYTAB+12     START OF RPL TEXT
-       .OR $800
-       .TF INOBJ,S6,D2
-       .IN MACROS,S6,D1
-       .IN START3	Initialization
-       .IN DISPLAY30	Print location & happenings each turn
-       .IN MONITOR2	Call monitor routines in other RAM bank
-       .IN EDGES27	Routines for altering/searching semantic network
-       .IN PRINT22	Print messages, strings; incl. compression routine
-       .IN STRTAB9
-       .IN LEX35.1	Lexical analysis: Examine raw string & find words
-       .IN TRANSFORM10.3	Grammatical transformations
-       .IN ATN16.1	Augmented transition network (parser)
-       .IN TRANSIT28	Transitions for the ATN
-       .IN TSUB16	Subroutines called by the transitions
-       .IN HANDLER41	Verb handler jumped to after parse completed
-*      .IN CHECK	Protection code
-       .IN CNDACT26,D2	Defines the interpreted adventure language used
-			by verb handlers & other things
-       .IN VOCA6	Vocabulary, A-I
-       .IN VOCJ5.1	Vocabulary, J-Z
-       .IN CASEFRAME	Verb case frames
-       .IN VERBS33.1	Verb execution routines
-       .IN VT18.1	More verb routines
-*      .OR $8000
-*      .TF GENOBJ
-*      .IN GENNUM3	Table used for reading vocab
-       .OR $D000
-       .TF INCARD	(Next part goes in 16K card)
-       .IN SPEAK13.1	Eliza parser
-*      .DO PROD
-*      .IN PROT2	More protection code
-*      .ELSE
-*PROT   RTS
-*PROCNT .HS 50       GOOD
-*       .FIN
-       .IN LP5,S5,D1	List processing routines
-       .IN CHARS14.1	Plans, character reactions, etc.
-       .IN EDSCRIPT	Eliza-type scripts, by character
-       .IN LIBSCRIPT
-       .IN MRKSCRIPT
-       .IN MRSSCRIPT
-       .IN INTSCRIPT
-       .IN PROSCRIPT2
-       .IN IO9,S6,D2	Save/Restore game
-       .IN EVENTS5.1	Timed events & special events
-       .IN DATA37.1	Mostly objects
-       .IN NET10	Initial semantic network
+ END OF ARCHIVE