
    1       .LIST OFF
  800         .TI 76,65816 DISASSEMBLER.................FEBRUARY 14, 1985...........
  810  *SAVE S.816.DSM.NEW
  820  *--------------------------------
  830         .OR $300
  840         .OP 65816
  850         LDA #3
  860         SEC
  870         LDA #3
  880         CLC
  890         LDA #3
  900         REP #$30
  910         LDA #3
  920         CLC
  930         XCE
  940         LDA ##$EA34
  950         REP #$20
  960         LDA ##$EA34
  970         LDX ##$EA34
  980         REP #$10
  990         LDA ##$EA34
 1000         LDX ##$EA34
 1010         SEP #$30
 1020         .OR $800
 1030  *--------------------------------
 1040  IMM.SIZE .EQ $00
 1050  LMNEM    .EQ $2C
 1060  RMNEM    .EQ $2D
 1070  FORMATL  .EQ $2E
 1080  LENGTH   .EQ $2F
 1090  FORMATH  .EQ $30
 1100  PCL      .EQ $3A
 1110  PCH      .EQ $3B
 1120  *--------------------------------
 1130  SCRN2  .EQ $F879
 1140  PRNTAX .EQ $F941
 1150  PRBLNK .EQ $F948
 1160  PRBL2  .EQ $F94A
 1170  PCADJ  .EQ $F953
 1180  CROUT  .EQ $FD8E
 1190  PRBYTE .EQ $FDDA
 1200  COUT   .EQ $FDED
 1210  *--------------------------------
 1211    .LIST ON
 1220         .MA ON
 1280  ]1]2]3]4 .DA ']1-64*32+']2-64*32+']3-64*2
 1290         .EM
 1291    .LIF
 1300  *--------------------------------
 1310         .MA OXA
 1320         .DA #]1-OPNAMES.A/2+128
 1330         .EM
 1340  *--------------------------------
 1350         .MA OXB
 1360         .DA #]1-OPNAMES.B/2
 1370         .EM
 1380  *--------------------------------
 1390  T      LDA $C083    WRITE-ENABLE RAM COPY OF MONITOR
 1400         LDA $C083
 1410         LDA #INSTDSP      PATCH L-COMMAND TO USE MY
 1420         STA $FE65         DIS-ASSEMBLER
 1430         LDA /INSTDSP
 1440         STA $FE66
 1444    .LIST ON
 1450         LDX #$FF          START WITH E=1
 1454         STX E.BIT
 1458         STX STATUS.STACK  EMPTY THE STATUS STACK
 1462         INX               X=0
 1466         STX STATUS.PNTR
 1470         RTS
 1474  *--------------------------------
 1478  E.BIT         .BS 1
 1482  STATUS.PNTR   .BS 1
 1486  STATUS.STACK  .BS 8
 1488    .LIST OFF
 1490  *--------------------------------
 1500  OPNAMES.A
 1510         >ON A,S,L,A
 1520         >ON B,R,K
 1530         >ON C,L,C
 1540         >ON C,L,D
 1550         >ON C,L,I
 1560         >ON C,L,V
 1570         >ON C,O,P
 1580         >ON D,E,C,A
 1590         >ON D,E,X
 1600         >ON D,E,Y
 1610         >ON I,N,C,A
 1620         >ON I,N,X
 1630         >ON I,N,Y
 1640         >ON L,S,R,A
 1650         >ON N,O,P
 1660         >ON P,H,A
 1670         >ON P,H,B
 1680         >ON P,H,D
 1690         >ON P,H,K
 1700         >ON P,H,P
 1710         >ON P,H,X
 1720         >ON P,H,Y
 1730         >ON P,L,A
 1740         >ON P,L,B
 1750         >ON P,L,D
 1760         >ON P,L,P
 1770         >ON P,L,X
 1780         >ON P,L,Y
 1790         >ON R,O,L,A
 1800         >ON R,O,R,A
 1810         >ON R,T,I
 1820         >ON R,T,L
 1830         >ON R,T,S
 1840         >ON S,E,C
 1850         >ON S,E,D
 1860         >ON S,E,I
 1870         >ON S,T,P
 1880         >ON T,A,X
 1890         >ON T,A,Y
 1900         >ON T,C,D
 1910         >ON T,C,S
 1920         >ON T,D,C
 1930         >ON T,S,C
 1940         >ON T,S,X
 1950         >ON T,X,A
 1960         >ON T,X,S
 1970         >ON T,X,Y
 1980         >ON T,Y,A
 1990         >ON T,Y,X
 2000         >ON W,A,I
 2010         >ON W,D,M
 2020         >ON X,B,A
 2030         >ON X,C,E
 2040  *--------------------------------
 2050  OPNAMES.B
 2060         >ON A,D,C
 2070         >ON A,N,D
 2080         >ON A,S,L
 2090         >ON B,C,C
 2100         >ON B,C,S
 2110         >ON B,E,Q
 2120         >ON B,I,T
 2130         >ON B,M,I
 2140         >ON B,N,E
 2150         >ON B,P,L
 2160         >ON B,R,A
 2170         >ON B,R,L
 2180         >ON B,V,C
 2190         >ON B,V,S
 2200         >ON C,M,P
 2210         >ON C,P,X
 2220         >ON C,P,Y
 2230         >ON D,E,C
 2240         >ON E,O,R
 2250         >ON I,N,C
 2260         >ON J,M,L
 2270         >ON J,M,P
 2280         >ON J,S,L
 2290         >ON J,S,R
 2300         >ON L,D,A
 2310         >ON L,D,X
 2320         >ON L,D,Y
 2330         >ON L,S,R
 2340         >ON M,V,N
 2350         >ON M,V,P
 2360         >ON O,R,A
 2370         >ON P,E,A
 2380         >ON P,E,I
 2390         >ON P,E,R
 2400         >ON R,E,P
 2410         >ON R,O,L
 2420         >ON R,O,R
 2430         >ON S,B,C
 2440         >ON S,E,P
 2450         >ON S,T,A
 2460         >ON S,T,X
 2470         >ON S,T,Y
 2480         >ON S,T,Z
 2490         >ON T,R,B
 2500         >ON T,S,B
 2510  *--------------------------------
 2520  OPINDEX
 2530  *---0X---------------------------
 2540         >OXA BRK
 2550         >OXB ORA
 2560         >OXA COP
 2570         >OXB ORA
 2580         >OXB TSB
 2590         >OXB ORA
 2600         >OXB ASL
 2610         >OXB ORA
 2620         >OXA PHP
 2630         >OXB ORA
 2640         >OXA ASLA
 2650         >OXA PHD
 2660         >OXB TSB
 2670         >OXB ORA
 2680         >OXB ASL
 2690         >OXB ORA
 2700  *---1X---------------------------
 2710         >OXB BPL
 2720         >OXB ORA
 2730         >OXB ORA
 2740         >OXB ORA
 2750         >OXB TRB
 2760         >OXB ORA
 2770         >OXB ASL
 2780         >OXB ORA
 2790         >OXA CLC
 2800         >OXB ORA
 2810         >OXA INCA
 2820         >OXA TCS
 2830         >OXB TRB
 2840         >OXB ORA
 2850         >OXB ASL
 2860         >OXB ORA
 2870  *---2X---------------------------
 2880         >OXB JSR
 2890         >OXB AND
 2900         >OXB JSL
 2910         >OXB AND
 2920         >OXB BIT
 2930         >OXB AND
 2940         >OXB ROL
 2950         >OXB AND
 2960         >OXA PLP
 2970         >OXB AND
 2980         >OXA ROLA
 2990         >OXA PLD
 3000         >OXB BIT
 3010         >OXB AND
 3020         >OXB ROL
 3030         >OXB AND
 3040  *---3X---------------------------
 3050         >OXB BMI
 3060         >OXB AND
 3070         >OXB AND
 3080         >OXB AND
 3090         >OXB BIT
 3100         >OXB AND
 3110         >OXB ROL
 3120         >OXB AND
 3130         >OXA SEC
 3140         >OXB AND
 3150         >OXA DECA
 3160         >OXA TSC
 3170         >OXB BIT
 3180         >OXB AND
 3190         >OXB ROL
 3200         >OXB AND
 3210  *---4X---------------------------
 3220         >OXA RTI
 3230         >OXB EOR
 3240         >OXA WDM
 3250         >OXB EOR
 3260         >OXB MVP
 3270         >OXB EOR
 3280         >OXB LSR
 3290         >OXB EOR
 3300         >OXA PHA
 3310         >OXB EOR
 3320         >OXA LSRA
 3330         >OXA PHK
 3340         >OXB JMP
 3350         >OXB EOR
 3360         >OXB LSR
 3370         >OXB EOR
 3380  *---5X---------------------------
 3390         >OXB BVC
 3400         >OXB EOR
 3410         >OXB EOR
 3420         >OXB EOR
 3430         >OXB MVN
 3440         >OXB EOR
 3450         >OXB LSR
 3460         >OXB EOR
 3470         >OXA CLI
 3480         >OXB EOR
 3490         >OXA PHY
 3500         >OXA TCD
 3510         >OXB JMP
 3520         >OXB EOR
 3530         >OXB LSR
 3540         >OXB EOR
 3550  *---6X---------------------------
 3560         >OXA RTS
 3570         >OXB ADC
 3580         >OXB PER
 3590         >OXB ADC
 3600         >OXB STZ
 3610         >OXB ADC
 3620         >OXB ROR
 3630         >OXB ADC
 3640         >OXA PLA
 3650         >OXB ADC
 3660         >OXA RORA
 3670         >OXA RTL
 3680         >OXB JMP
 3690         >OXB ADC
 3700         >OXB ROR
 3710         >OXB ADC
 3720  *---7X---------------------------
 3730         >OXB BVS
 3740         >OXB ADC
 3750         >OXB ADC
 3760         >OXB ADC
 3770         >OXB STZ
 3780         >OXB ADC
 3790         >OXB ROR
 3800         >OXB ADC
 3810         >OXA SEI
 3820         >OXB ADC
 3830         >OXA PLY
 3840         >OXA TDC
 3850         >OXB JMP
 3860         >OXB ADC
 3870         >OXB ROR
 3880         >OXB ADC
 3890  *---8X---------------------------
 3900         >OXB BRA
 3910         >OXB STA
 3920         >OXB BRL
 3930         >OXB STA
 3940         >OXB STY
 3950         >OXB STA
 3960         >OXB STX
 3970         >OXB STA
 3976  *>>>CHANGED FROM "TAY"
 3977   .LIST ON
 3980         >OXA DEY
 3987   .LIST OFF
 3990         >OXB BIT
 4000         >OXA TXA
 4010         >OXA PHB
 4020         >OXB STY
 4030         >OXB STA
 4040         >OXB STX
 4050         >OXB STA
 4060  *---9X---------------------------
 4070         >OXB BCC
 4080         >OXB STA
 4090         >OXB STA
 4100         >OXB STA
 4110         >OXB STY
 4120         >OXB STA
 4130         >OXB STX
 4140         >OXB STA
 4150         >OXA TYA
 4160         >OXB STA
 4170         >OXA TXS
 4180         >OXA TXY
 4190         >OXB STZ
 4200         >OXB STA
 4210         >OXB STZ
 4220         >OXB STA
 4230  *---AX---------------------------
 4240         >OXB LDY
 4250         >OXB LDA
 4260         >OXB LDX
 4270         >OXB LDA
 4280         >OXB LDY
 4290         >OXB LDA
 4300         >OXB LDX
 4310         >OXB LDA
 4320         >OXA TAY
 4330         >OXB LDA
 4340         >OXA TAX
 4350         >OXA PLB
 4360         >OXB LDY
 4370         >OXB LDA
 4380         >OXB LDX
 4390         >OXB LDA
 4400  *---BX---------------------------
 4410         >OXB BCS
 4420         >OXB LDA
 4430         >OXB LDA
 4440         >OXB LDA
 4450         >OXB LDY
 4460         >OXB LDA
 4470         >OXB LDX
 4480         >OXB LDA
 4490         >OXA CLV
 4500         >OXB LDA
 4510         >OXA TSX
 4520         >OXA TYX
 4530         >OXB LDY
 4540         >OXB LDA
 4550         >OXB LDX
 4560         >OXB LDA
 4570  *---CX---------------------------
 4580         >OXB CPY
 4590         >OXB CMP
 4600         >OXB REP
 4610         >OXB CMP
 4620         >OXB CPY
 4630         >OXB CMP
 4640         >OXB DEC
 4650         >OXB CMP
 4660         >OXA INY
 4670         >OXB CMP
 4680         >OXA DEX
 4690         >OXA WAI
 4700         >OXB CPY
 4710         >OXB CMP
 4720         >OXB DEC
 4730         >OXB CMP
 4740  *---DX---------------------------
 4750         >OXB BNE
 4760         >OXB CMP
 4770         >OXB CMP
 4780         >OXB CMP
 4790         >OXB PEI
 4800         >OXB CMP
 4810         >OXB DEC
 4820         >OXB CMP
 4830         >OXA CLD
 4840         >OXB CMP
 4850         >OXA PHX
 4860         >OXA STP
 4870         >OXB JML
 4880         >OXB CMP
 4890         >OXB DEC
 4900         >OXB CMP
 4910  *---EX---------------------------
 4920         >OXB CPX
 4930         >OXB SBC
 4940         >OXB SEP
 4950         >OXB SBC
 4960         >OXB CPX
 4970         >OXB SBC
 4980         >OXB INC
 4990         >OXB SBC
 5000         >OXA INX
 5010         >OXB SBC
 5020         >OXA NOP
 5030         >OXA XBA
 5040         >OXB CPX
 5050         >OXB SBC
 5060         >OXB INC
 5070         >OXB SBC
 5080  *---FX---------------------------
 5090         >OXB BEQ
 5100         >OXB SBC
 5110         >OXB SBC
 5120         >OXB SBC
 5130         >OXB PEA
 5140         >OXB SBC
 5150         >OXB INC
 5160         >OXB SBC
 5170         >OXA SED
 5180         >OXB SBC
 5190         >OXA PLX
 5200         >OXA XCE
 5210         >OXB JSR
 5220         >OXB SBC
 5230         >OXB INC
 5240         >OXB SBC
 5250  *--------------------------------
 5260  OPFORMAT
 5270  F.0    .HS 00.14.00.1C.02.02.02.20.00.00.00.00.04.04.04.06
 5280  F.1    .HS 26.16.12.1E.02.08.08.22.00.10.00.00.04.0A.0A.0C
 5290  F.2    .HS 04.14.06.1C.02.02.02.20.00.00.00.00.04.04.04.06
 5300  F.3    .HS 26.16.12.1E.08.08.08.22.00.10.00.00.0A.0A.0A.0C
 5310  F.4    .HS 00.14.00.1C.24.02.02.20.00.00.00.00.04.04.04.06
 5320  F.5    .HS 26.16.12.1E.24.08.08.22.00.10.00.00.06.0A.0A.0C
 5330  F.6    .HS 00.14.28.1C.02.02.02.20.00.00.00.00.18.04.04.06
 5340  F.7    .HS 26.16.12.1E.08.08.08.22.00.10.00.00.1A.0A.0A.0C
 5350  F.8    .HS 26.14.28.1C.02.02.02.20.00.00.00.00.04.04.04.06
 5360  F.9    .HS 26.16.12.1E.08.08.0E.22.00.10.00.00.04.0A.0A.0C
 5370  F.A    .HS 00.14.00.1C.02.02.02.20.00.00.00.00.04.04.04.06
 5380  F.B    .HS 26.16.12.1E.08.08.0E.22.00.10.00.00.0A.0A.10.0C
 5390  F.C    .HS 00.14.00.1C.02.02.02.20.00.00.00.00.04.04.04.06
 5400  F.D    .HS 26.16.12.1E.02.08.08.22.00.10.00.00.18.0A.0A.0C
 5410  F.E    .HS 00.14.00.1C.02.02.02.20.00.00.00.00.04.04.04.06
 5420  F.F    .HS 26.16.12.1E.08.08.08.22.00.10.00.00.1A.0A.0A.0C
 5430  *--------------------------------
 5440  FMTBL
 5450  *-----# > ( $ , X S ) , Y $ - - - LL
 5460   .DA %1.0.0.1.0.0.0.0.0.0.0.0.0.0.01 -- IMMEDIATE    00
 5470   .DA %0.0.0.1.0.0.0.0.0.0.0.0.0.0.01 -- DIRECT       02
 5480   .DA %0.0.0.1.0.0.0.0.0.0.0.0.0.0.10 -- ABS          04
 5490   .DA %0.0.0.1.0.0.0.0.0.0.0.0.0.0.11 -- LONG         06
 5500  *-----# > ( $ , X S ) , Y $ - - - LL
 5510   .DA %0.0.0.1.1.1.0.0.0.0.0.0.0.0.01 -- DIRECT,X     08
 5520   .DA %0.0.0.1.1.1.0.0.0.0.0.0.0.0.10 -- ABS,X        0A
 5530   .DA %0.0.0.1.1.1.0.0.0.0.0.0.0.0.11 -- LONG,X       0C
 5540  *-----# > ( $ , X S ) , Y $ - - - LL
 5550   .DA %0.0.0.1.1.0.0.0.0.1.0.0.0.0.01 -- DIRECT,Y     0E
 5560   .DA %0.0.0.1.1.0.0.0.0.1.0.0.0.0.10 -- ABS,Y        10
 5570  *-----# > ( $ , X S ) , Y $ - - - LL
 5580   .DA %0.0.1.1.0.0.0.1.0.0.0.0.0.0.01 -- IND          12
 5590   .DA %0.0.1.1.1.1.0.1.0.0.0.0.0.0.01 -- INDX         14
 5600   .DA %0.0.1.1.0.0.0.1.1.1.0.0.0.0.01 -- INDY         16
 5610  *-----# > ( $ , X S ) , Y $ - - - LL
 5620   .DA %0.0.1.1.0.0.0.1.0.0.0.0.0.0.10 -- INDABS       18
 5630   .DA %0.0.1.1.1.1.0.1.0.0.0.0.0.0.10 -- INDABSX      1A
 5640  *-----# > ( $ , X S ) , Y $ - - - LL
 5650   .DA %0.0.0.1.1.0.1.0.0.0.0.0.0.0.01 -- STK          1C
 5660   .DA %0.0.1.1.1.0.1.1.1.1.0.0.0.0.01 -- STKY         1E
 5670  *-----# > ( $ , X S ) , Y $ - - - LL
 5680   .DA %0.1.1.1.0.0.0.1.0.0.0.0.0.0.01 -- INDLONG      20
 5690   .DA %0.1.1.1.0.0.0.1.1.1.0.0.0.0.01 -- INDLONGY     22
 5700   .DA %0.0.0.1.0.0.0.0.1.0.1.0.0.0.10 -- MVN & MVP    24
 5710   .DA %0.0.0.0.0.0.0.0.0.0.1.0.0.0.01 -- RELATIVE     26
 5720   .DA %0.0.0.0.0.0.0.0.0.0.1.0.0.0.10 -- LONG RELA.   28
 5730  *--------------------------------
 5740  FMTSTR .AS -/$Y,)SX,$(>#/
 5750  *--------------------------------
 5760  INSDS1 JSR CROUT
 5770         LDA PCH
 5780         JSR PRBYTE
 5790         LDA PCL
 5800         JSR PRBYTE
 5810         LDA #"-"
 5820         JSR COUT
 5830         LDA #" "
 5840         JSR COUT
 5850         LDY #0
 5860         LDA (PCL),Y  GET OPCODE
 5863   .LIST ON
 5864  *>>>INSERT LINE HERE
 5865         JSR TEST.OP.CODES         <<<>>>
 5866    .LIF
 5870  INSDS2 TAY          SAVE IN Y-REG
 5880         LDA OPINDEX,Y
 5890         ASL
 5900         TAX
 5910         BCC .1       ...NOT SINGLE BYTE OPCODE
 5920         LDA OPNAMES.A,X
 5930         STA RMNEM
 5940         LDA OPNAMES.A+1,X
 5950         STA LMNEM
 5960         LDA #0
 5970         STA LENGTH
 5980         RTS
 5990  *--------------------------------
 6000  .1     LDA OPNAMES.B,X
 6010         STA RMNEM
 6020         LDA OPNAMES.B+1,X
 6030         STA LMNEM
 6040         LDX OPFORMAT,Y
 6050         LDA FMTBL+1,X
 6060         STA FORMATH
 6070         LDA FMTBL,X
 6080         STA FORMATL
 6090         AND #3
 6100         STA LENGTH
 6110         TXA          CHECK IF IMMEDIATE
 6120         BNE .2       ...NO
 6130         BIT IMM.SIZE CHECK IF 16-BIT MODE
 6140         BPL .2       ...NO
 6150         INC LENGTH   ...YES
 6160  .2     RTS
 6170  *--------------------------------
 6180  INSTDSP
 6190         JSR INSDS1
 6200         LDY #0       PRINT BYTES OF OPCODE & OPERAND
 6210  .1     LDA (PCL),Y
 6220         JSR PRBYTE
 6230         LDX #1       PRINT 1 BLANK
 6240  .2     JSR PRBL2
 6250         CPY LENGTH
 6260         INY
 6270         BCC .1
 6280         LDX #3
 6290         CPY #4
 6300         BCC .2
 6310  *---PRINT MNEMONIC---------------
 6320         LDY #3       THREE LETTERS
 6330  .3     LDA #6       SHIFT OUT ONE LETTER, TOP BITS 11
 6340  .4     ASL RMNEM
 6350         ROL LMNEM
 6360         ROL
 6370         BPL .4       ...NOT ENUF BITS YET
 6380         JSR COUT     PRINT THE LETTER
 6390         DEY
 6400         BNE .3       ...MORE LETTERS
 6410         LDY LENGTH
 6420         BEQ .8       ...SINGLE BYTE OPCODE
 6430         LDA FORMATL
 6440         AND #$20     SEE IF SPECIAL
 6450         BNE .9       ...YES, MOVES OR RELATIVES
 6460  *---PRINT NORMAL OPERANDS--------
 6470         LDA #" "
 6480         JSR COUT
 6490         LDX #10      11 FORMAT BITS
 6500  .5     ASL FORMATL
 6510         ROL FORMATH
 6520         BCC .7
 6530         LDA FMTSTR,X
 6540         JSR COUT
 6550         CMP #"#"
 6560         BNE .55
 6570         BIT IMM.SIZE
 6580         BPL .7
 6590         JSR COUT
 6600  .55    CMP #"$"
 6610         BNE .7
 6620  .6     LDA (PCL),Y
 6630         JSR PRBYTE
 6640         DEY
 6650         BNE .6
 6660  .7     DEX
 6670         BPL .5
 6680  .8     RTS
 6690  *---SPECIAL CASES----------------
 6700  .9     LDA #" "
 6710         JSR COUT
 6720         LDA #"$"
 6730         JSR COUT
 6740         LDA FORMATL
 6750         BMI .11      MVN & MVP
 6755   .LIST ON
 6760  *---8- OR 16-BIT RELATIVE--------
 6770         LDA (PCL),Y  8=OFFSET, 16=OFFSETHI
 6780         DEY          TEST LENGTH
 6790         STY FORMATH  =0 IF 8-BIT
 6800         BEQ .10      ...8-BIT
 6810         STA FORMATH  ...16-BIT
 6820         LDA (PCL),Y  LOW BYTE OF 16-BIT OFFSET
 6830  .10    STA FORMATL
 6840         JSR PCADJ
 6850         CLC
 6860         ADC FORMATL
 6870         TAX
 6880         TYA
 6890         ADC FORMATH
 6900         JMP PRNTAX
 6905    .LIST OFF
 6960  *---MVN & MVP--------------------
 6970  .11    LDA (PCL),Y
 6980         JSR PRBYTE
 6990         LDA #","
 7000         JSR COUT
 7010         LDA #"$"
 7020         JSR COUT
 7030         DEY
 7040         LDA (PCL),Y
 7050         JMP PRBYTE
 7055    .LIST ON
 7060  *--------------------------------
 7070  TEST.OP.CODES
 7080         PHA          SAVE OPCODE
 7090         LSR IMM.SIZE      ASSUME 8-BIT IMMEDIATE
 7100         LDX STATUS.PNTR
 7110         CMP #$18     CLC?
 7120         BEQ CLC.OP
 7130         CMP #$38     SEC?
 7140         BEQ SEC.OP
 7150         INY
 7160         CMP #$C2     REP?
 7170         BEQ REP.OP
 7180         CMP #$E2     SEP?
 7190         BEQ SEP.OP
 7200         DEY
 7210         CMP #$08     PHP?
 7220         BEQ PHP.OP
 7230         CMP #$28     PLP?
 7240         BEQ PLP.OP
 7250         CMP #$FB     XCE?
 7260         BEQ XCE.OP
 7270  *--------------------------------
 7280         AND #$1F     ORA, AND, EOR, ADC, BIT, LDA, CMP, SBC?
 7290         CMP #$09
 7300         PHP          SAVE ANSWER
 7310         LDA #$20     ASSUME M-BIT
 7320         PLP          GET PREVIOUS ANSWER
 7330         BEQ .1       IT IS M-BIT
 7340         LSR    (LDA #$10)    USE X-BIT INSTEAD
 7350  .1     AND STATUS.STACK,X
 7360         BNE .2       ...USE 8-BIT IMMEDIATE
 7370         LDA E.BIT
 7380         LSR
 7390         BCS .2       E=1, USE 8-BIT IMMEDIATE
 7400         LDA #$FF     ...USE 16-BIT IMMEDIATE
 7410         STA IMM.SIZE
 7420  .2     PLA          GET OPCODE AGAIN
 7430         RTS
 7440  *--------------------------------
 7450  CLC.OP LDA STATUS.STACK,X
 7460         AND #$FE
 7470  UPDATE.STATUS
 7480         STA STATUS.STACK,X
 7490         PLA
 7500         RTS
 7510  *--------------------------------
 7520  SEC.OP LDA STATUS.STACK,X
 7530         ORA #$01
 7540         BNE UPDATE.STATUS   ...ALWAYS
 7550  *--------------------------------
 7560  REP.OP LDA (PCL),Y     LOOK AT OPERAND
 7570         EOR #$FF
 7580         AND STATUS.STACK,X
 7590         JMP UPDATE.STATUS
 7600  *--------------------------------
 7610  SEP.OP LDA (PCL),Y
 7620         ORA STATUS.STACK,X
 7630         JMP UPDATE.STATUS
 7640  *--------------------------------
 7650  PHP.OP LDA STATUS.STACK,X
 7660         INX
 7670         CPX #8
 7680         BCC PHP.PLP
 7690         LDX #0
 7700  PHP.PLP
 7710         STX STATUS.PNTR
 7720         JMP UPDATE.STATUS
 7730  *--------------------------------
 7740  PLP.OP DEX
 7750         BPL PHP.PLP
 7760         LDX #7
 7770         BEQ PHP.PLP
 7780  *--------------------------------
 7790  XCE.OP LSR E.BIT    GET E-BIT INTO CARRY
 7800         PHP          SAVE IT
 7810         LDA STATUS.STACK,X
 7820         STA E.BIT    NEW E-BIT
 7830         LSR          C-BIT INTO CARRY
 7840         BCC .1       ...NEW E-BIT = 0
 7850         ORA #$18     ...NEW E-BIT=1, SO SET M=X=1
 7860  .1     PLP          GET NEW C-BIT (OLD E-BIT)
 7870         ROL          PUT IT INTO STATUS BYTE
 7880         JMP UPDATE.STATUS
 7890  *--------------------------------
 7900  TT     LDY #0
 7910         LDA #$C0
 7920         STA PCL
 7930         LDA #2       $2C0...$3C3
 7940         STA PCH
 7950  .1     TYA
 7960         STA $2C0,Y
 7970         INY
 7980         BNE .1
 7990         STY $3C0
 8000         INY
 8010         STY $3C1
 8020         INY
 8030         STY $3C2
 8040  .2     JSR INSTDSP
 8050         LDY #0
 8060         LDA (PCL),Y
 8070         CMP #$FF
 8080         BEQ .3
 8090  .4     LDA $C000
 8100         BPL .4
 8110         STA $C010
 8120         INC PCL
 8130         BNE .2
 8140         INC PCH
 8150         BNE .2       ...ALWAYS
 8160  .3     RTS
 8170  *--------------------------------
 8180     .LIF

