[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: 65c02 disassembler on IIe



Michael Spangler schrieb:
> 
> I've been wondering if it possible to fix the disassembler on the IIe
> to show the 65c02 instructions. 

Peeker Magazine modified the IIc disassembler for use with IIplus and
IIe. The article was written by Ulrich Stiehl and published in Vol.
1/1984. This program transfers the monitor ROM into the LC and modiefies
it. Due to space limitations in the Monitor ROM the LoRes routines are
overwritten.

Patrick



 ORG $6000
*
* 65C02-DISASSEMBLER
* ==================
*
******************
*                *
*  Move-Routine  *
*                *
******************
*
* APSOFT = Interpreter + Monitor
*          $D000-$FFFF
* REST   = Sonstiger Monitor
*          $FA40-$FFFF
*
APSOFT EQU $D000
REST EQU $FA40
IND1 EQU $FC ;-$FD
IND2 EQU $FE ;-$FF
*
* Language Card schreibf{hig
* machen: Read ROM, Write LC
*
MOVE1 LDA $C081 ;RDROM
 LDA $C081 ;WRRAM
*
* ROM ab $D000-$FFFF in LC
* kopieren: Applesoft + F8-ROM
*
 LDY #0
 STY IND1
 LDA #>APSOFT
 STA IND1+1
MOVE2 LDA (IND1),Y ;LOADROM
 STA (IND1),Y ;STORELC
 INY
 BNE MOVE2
 INC IND1+1
 BNE MOVE2 ;-$FFFF
*
* $F82A-$FA3F mit neuem
* Disassembler }berschreiben
*
* IND1: $604E
*
 LDA #<MOVE6+1
 STA IND1
 LDA #>MOVE6
 STA IND1+1
*
* IND2: $F82A
*
 LDA #<NEU1
 STA IND2
 LDA #>NEU1
 STA IND2+1
*
 LDY #0
MOVE3 LDA (IND1),Y
 STA (IND2),Y
 INC IND1
 BNE MOVE4
 INC IND1+1
MOVE4 INC IND2
 BNE MOVE5
 INC IND2+1
MOVE5 LDA IND2+1
 CMP #>REST
 BCC MOVE3 ;<$FA00
 LDA IND2
 CMP #<REST
 BCC MOVE3 ;<$FA40
*
* LC lese- UND schreibf{hig
* machen: Bank 2 R/W enable
*
 LDA $C083 ;RDLC
 LDA $C083 ;WRLC
MOVE6 RTS  ;Exit
*
****************************
*                          *
*  Apple IIc Disassembler  *
*                          *
*  f}r 65C02-Processor,    *
*                          *
*  umgeschrieben f}r IIe,  *
*                          *
*  II Plus von U.Stiehl    *
*                          *
****************************
*
* Verwendbar auf Apple II Plus
* mit Language Card sowie auf
* Apple IIe. Disassemblierung
* ist sowohl m|glich mit als
* auch ohne 65C02-Processor,
* da der Disassembler selbst
* die neuen Op-Codes NICHT
* benutzt!
*
* Achtung: Lores-Grafik-Routinen
* ab $F800 werden teils }ber-
* schrieben und d}rfen nicht
* aufgerufen werden!
*
*--------------------------------
*
* Externe Routinen
*
PRYX2 EQU $FD96
PRBYTE EQU $FDDA
COUT EQU $FDED
*
*--------------------------------
*
* Disassembler-Beginn: $F82A
*
 ORG $F82A
*
NEU1 TYA
 LDX #$16
NEU2 CMP NEUTAB1,X
 BEQ NEU3
 DEX
 BPL NEU2
 RTS
*
NEU3 LDA NEUTAB2,X
 LDY #$00
 RTS
*
*--------------------------------
*
NEUTAB1 HEX 12 ;$00
 HEX 14
 HEX 1A
 HEX 1C
 HEX 32
 HEX 34
 HEX 3A
 HEX 3C
 HEX 52
 HEX 5A
 HEX 64
 HEX 72
 HEX 74
 HEX 7A
 HEX 7C
 HEX 89
 HEX 92 ;10
 HEX 9C
 HEX 9E
 HEX B2
 HEX D2
 HEX F2
 HEX FC
*
*--------------------------------
*
NEUTAB2 HEX 38 ;ORA
 HEX 43 ;TRB
 HEX 37 ;INC
 HEX 43 ;TRB
 HEX 39 ;AND
 HEX 21 ;BIT
 HEX 36 ;DEC
 HEX 21 ;BIT
 HEX 3A ;EOR
 HEX 40 ;PHY
 HEX 42 ;STZ
 HEX 3B ;ADC
 HEX 42 ;STZ
 HEX 41 ;PLY
 HEX 22 ;JMP
 HEX 21 ;BIT
 HEX 3C ;STA
 HEX 42 ;STZ
 HEX 42 ;STZ
 HEX 3D ;LDA
 HEX 3E ;CMP
 HEX 3F ;SBC
 HEX 44 ;???
*
*--------------------------------
*
* PC-Adjust aus Platzgr}nden
* an diese Stelle verschoben.
* Urspr}nglich ab $F953,
* wo jetzt ein JMP steht.
*
PCADJ SEC  ;$F953
PCADJ2 LDA $2F
PCADJ3 LDY $3B
 TAX
 BPL PCADJ4
 DEY
PCADJ4 ADC $3A
 BCC RTS2
 INY
RTS2 RTS
*
*--------------------------------
*
* Apple IIc ROM-Kopie ab $F879
* mit diversen Patches, da sich
* die Opcodes TRB, PHY, PLY usw.
* im IIc-ROM bei $FAB8-$FABC
* und $FAF8-$FAFC befinden,
* wo beim Apple II Plus und
* IIe unentbehrliche Monitor-
* Routinen stehen.
*
SCRN2 BCC RTMSKZ
 LSR
 LSR
 LSR
 LSR
RTMSKZ AND #$0F
 RTS
INSDS1 LDX $3A
 LDY $3B
 JSR PRYX2
 JSR PRBLNK
 LDA ($3A,X)
 TAY
 LSR
 BCC INSDS1A
 ROR
 BCS IEVEN
 AND #$87
INSDS1A LSR  ;neu
 TAX
 LDA FMT1,X
 JSR SCRN2
 BNE GETFMT
IEVEN LDY #$FC ;$F8A1!
 LDA #$00
GETFMT TAX  ;$F8A5!
 LDA FMT2,X
 STA $2E
 AND #$03
 STA $2F
 JSR NEU1 ;!!!
 BEQ RTSNEU
 AND #$8F
 TAX
 TYA
 LDY #$03
 CPX #$8A
 BEQ MNNDX3
MNNDX1 LSR
 BCC MNNDX3
 LSR
MNNDX2 LSR
 ORA #$20
 DEY
 BNE MNNDX2
 INY
MNNDX3 DEY
 BNE MNNDX1
RTSNEU RTS  ;neu
*
 HEX FFFFFF ;F}ller
*
* Wird von $FE64 angesprungen
*
INSTDSP JSR INSDS1 ;extern
 PHA
PRNTOP LDA ($3A),Y
 JSR PRBYTE
 LDX #$01
PRNTBL JSR PRBL2
 CPY $2F
 INY
 BCC PRNTOP
 LDX #$03
 CPY #$04
 BCC PRNTBL
 PLA
 TAY
 LDA MNEML,Y
 STA $2C
 LDA MNEMR,Y
 STA $2D
PRMN1 LDA #$00
 LDY #$05
PRNM2 ASL $2D
 ROL $2C
 ROL
 DEY
 BNE PRNM2
 ADC #$BF
 JSR COUT
 DEX
 BNE PRMN1
 JSR PRBLNK
 LDY $2F
 LDX #$06
PRADR1 CPX #$03
 BEQ PRADR5
PRADR2 ASL $2E
 BCC PRADR3
 LDA CHAR2,X
 JSR COUT
 LDA CHAR1,X
 BEQ PRADR3
 JSR COUT
PRADR3 DEX
 BNE PRADR1
 RTS
PRADR4 DEY
 BMI PRADR2
 JSR PRBYTE
PRADR5 LDA $2E
 CMP #$E8
 LDA ($3A),Y
 BCC PRADR4
RELADR JSR PCADJ3
 TAX
 INX
 BNE PRNTYX
 INY
PRNTYX TYA
 JSR PRBYTE
 TXA
 JMP PRBYTE
PRBLNK LDX #$03
PRBL2 LDA #$A0
 JSR COUT
 DEX
 BNE PRBL2
 RTS
*
* Aus Platzgr}nden JMP nach
* Program Counter Adjust
* Wird von $FE67 angesprungen.
*
PCADJJMP JMP PCADJ ;extern
*
FMT1 HEX 0F ;neu
 HEX 22
 HEX FF
 HEX 33
 HEX CB
 HEX 62
 HEX FF
 HEX 73
 HEX 03
 HEX 22
 HEX FF
 HEX 33
 HEX CB
 HEX 66
 HEX FF
 HEX 77
 HEX 0F
 HEX 20
 HEX FF
 HEX 33
 HEX CB
 HEX 60
 HEX FF
 HEX 70
 HEX 0F
 HEX 22
 HEX FF
 HEX 39
 HEX CB
 HEX 66
 HEX FF
 HEX 7D
 HEX 0B
 HEX 22
 HEX FF
 HEX 33
 HEX CB
 HEX A6
 HEX FF
 HEX 73
 HEX 11
 HEX 22
 HEX FF
 HEX 33
 HEX CB
 HEX A6
 HEX FF
 HEX 87
 HEX 01
 HEX 22
 HEX FF
 HEX 33
 HEX CB
 HEX 60
 HEX FF
 HEX 70
 HEX 01
 HEX 22
 HEX FF
 HEX 33
 HEX CB
 HEX 60
 HEX FF
 HEX 70
 HEX 24
 HEX 31
 HEX 65
 HEX 78
FMT2 HEX 00
 HEX 21
 HEX 81
 HEX 82
 HEX 59
 HEX 4D
 HEX 91
 HEX 92
 HEX 86
 HEX 4A
 HEX 85
 HEX 9D
 HEX 49
CHAR1 HEX 5A ;neu
 HEX D9
 HEX 00
 HEX D8
 HEX A4
 HEX A4
CHAR2 HEX 00 ;neu
 HEX AC
 HEX A9
 HEX AC
 HEX A3
 HEX A8
 HEX A4
*
*--------------------------------
*
MNEML HEX 1C ;$00
 HEX 8A
 HEX 1C
 HEX 23
 HEX 5D
 HEX 8B
 HEX 1B
 HEX A1
 HEX 9D
 HEX 8A
 HEX 1D
 HEX 23
 HEX 9D
 HEX 8B
 HEX 1D
 HEX A1
 HEX 1C ;$10
 HEX 29
 HEX 19
 HEX AE
 HEX 69
 HEX A8
 HEX 19
 HEX 23
 HEX 24
 HEX 53
 HEX 1B
 HEX 23
 HEX 24
 HEX 53
 HEX 19
 HEX A1
 HEX AD ;$20
 HEX 1A
 HEX 5B
 HEX 5B
 HEX A5
 HEX 69
 HEX 24
 HEX 24
 HEX AE
 HEX AE
 HEX A8
 HEX AD
 HEX 29
 HEX 8A
 HEX 7C
 HEX 8B
 HEX 15 ;$30
 HEX 9C
 HEX 6D
 HEX 9C
 HEX A5
 HEX 69
 HEX 29
 HEX 53
 HEX 84
 HEX 13
 HEX 34
 HEX 11
 HEX A5
 HEX 69
 HEX 23
 HEX A0 ;$3F
*
* Erg{nzung der Tabelle
*
 HEX 8A
 HEX 8B
 HEX A5
 HEX AC
 HEX 00 ;$44
*
*--------------------------------
*
MNEMR HEX D8 ;BRK
 HEX 62 ;PHP
 HEX 5A ;BPL
 HEX 48 ;CLC
 HEX 26 ;JSR
 HEX 62 ;PLP
 HEX 94 ;BMI
 HEX 88 ;SEC
 HEX 54 ;RTI
 HEX 44 ;PHA
 HEX C8 ;BVC
 HEX 54 ;CLI
 HEX 68 ;RTS
 HEX 44 ;PLA
 HEX E8 ;BVS
 HEX 94 ;SEI
 HEX C4 ;BRA
 HEX B4 ;DEY
 HEX 08 ;BCC
 HEX 84 ;TYA
 HEX 74 ;LDY
 HEX B4 ;TAY
 HEX 28 ;BCS
 HEX 6E ;CLV
 HEX 74 ;CPY
 HEX F4 ;INY
 HEX CC ;BNE
 HEX 4A ;CLD
 HEX 72 ;CPX
 HEX F2 ;INX
 HEX A4 ;BEQ
 HEX 8A ;SED
 HEX 06 ;TSB
 HEX AA ;BIT
 HEX A2 ;JMP
 HEX A2 ;JMP
 HEX 74 ;STY
 HEX 74 ;LDY
 HEX 74 ;CPY
 HEX 72 ;CPX
 HEX 44 ;TXA
 HEX 68 ;TXS
 HEX B2 ;TAX
 HEX 32 ;TSX
 HEX B2 ;DEX
 HEX 72 ;PHX
 HEX 22 ;NOP
 HEX 72 ;PLX
 HEX 1A ;ASL
 HEX 1A ;ROL
 HEX 26 ;LSR
 HEX 26 ;ROR
 HEX 72 ;STX
 HEX 72 ;LDX
 HEX 88 ;DEC
 HEX C8 ;INC
 HEX C4 ;ORA
 HEX CA ;AND
 HEX 26 ;EOR
 HEX 48 ;ADC
 HEX 44 ;STA
 HEX 44 ;LDA
 HEX A2 ;CMP
 HEX C8 ;SBC
*
* Erg{nzung der Tabelle
*
 HEX 74 ;PHY
 HEX 74 ;PLY
 HEX 76 ;STZ
 HEX C6 ;TRB
 HEX 00 ;???
*
* F}ller bis $FA3F
*
 NOP
ENDE NOP  ;$FA3F
 LST OFF