[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