started work on disassemble command integration
This commit is contained in:
1 parent
6dd3a6d5b2
commit
b0cc5dc503
5 files changed
+109
-91
No files matched your search
@@ -11,7 +11,7 @@
|
|||||||
; ********************
|
; ********************
|
||||||
|
|
||||||
!addr Bank = 2 ; XXX remove this
|
!addr Bank = 2 ; XXX remove this
|
||||||
!addr Adr_Mode = 2 ; $00 = C64 address, $80 = M65 flat address ; XXX adapt the implementation
|
!addr Adr_Mode = 2 ; $00 = 64K address, $80 = M65 flat address ; XXX adapt the implementation
|
||||||
!addr PCH = 3
|
!addr PCH = 3
|
||||||
!addr PCL = 4
|
!addr PCL = 4
|
||||||
!addr SR = 5
|
!addr SR = 5
|
||||||
|
|||||||
+10
-49
@@ -15,14 +15,19 @@ Mon_Call:
|
|||||||
|
|
||||||
JSR Print_Commands
|
JSR Print_Commands
|
||||||
|
|
||||||
; clear register for monitor call
|
; set default addressing mode to 64K
|
||||||
|
|
||||||
LDA #0
|
LDA #0
|
||||||
|
STA Adr_Mode
|
||||||
|
|
||||||
|
; clear register for monitor call
|
||||||
|
|
||||||
LDX #6
|
LDX #6
|
||||||
@loop STA AC,X
|
@loop STA AC,X
|
||||||
DEX
|
DEX
|
||||||
BPL @loop
|
BPL @loop
|
||||||
|
|
||||||
|
|
||||||
; set default PC to monitor exit point
|
; set default PC to monitor exit point
|
||||||
|
|
||||||
LDA #<monitor_exit
|
LDA #<monitor_exit
|
||||||
@@ -386,7 +391,7 @@ Dec_LDA:
|
|||||||
RTS
|
RTS
|
||||||
|
|
||||||
; ****
|
; ****
|
||||||
Fetch:
|
Fetch: ; XXX get rid of this, use helper!
|
||||||
; ****
|
; ****
|
||||||
|
|
||||||
PHZ
|
PHZ
|
||||||
@@ -426,7 +431,7 @@ Mon_Bits:
|
|||||||
BCS @lab
|
BCS @lab
|
||||||
JSR LAC_To_LPC ; Long_PC = start address
|
JSR LAC_To_LPC ; Long_PC = start address
|
||||||
@lab JSR Print_CR
|
@lab JSR Print_CR
|
||||||
LDA #KEY_WHITE
|
LDA #KEY_WHITE ; XXX adapt colors
|
||||||
STA Long_DA+1
|
STA Long_DA+1
|
||||||
|
|
||||||
LDX #8
|
LDX #8
|
||||||
@@ -503,11 +508,6 @@ Mon_Go:
|
|||||||
|
|
||||||
; XXX to be rewritten for Open ROMs!
|
; XXX to be rewritten for Open ROMs!
|
||||||
jmp Main
|
jmp Main
|
||||||
; JSR Get_LAC ; get 1st. parameter
|
|
||||||
; JSR LAC_To_PC
|
|
||||||
; LDX SPL
|
|
||||||
; TXS
|
|
||||||
; JMP JMPFAR
|
|
||||||
|
|
||||||
; ******
|
; ******
|
||||||
Mon_JSR:
|
Mon_JSR:
|
||||||
@@ -515,14 +515,6 @@ Mon_JSR:
|
|||||||
|
|
||||||
; XXX to be rewritten for Open ROMs!
|
; XXX to be rewritten for Open ROMs!
|
||||||
jmp Main
|
jmp Main
|
||||||
; JSR Get_LAC ; get 1st. parameter
|
|
||||||
; JSR LAC_To_PC
|
|
||||||
; LDX SPL
|
|
||||||
; TXS
|
|
||||||
; JSR JSRFAR
|
|
||||||
; TSX
|
|
||||||
; STX SPL
|
|
||||||
; JMP Main
|
|
||||||
|
|
||||||
; ***********
|
; ***********
|
||||||
Dump_4_Bytes: ; XXX to be adapted
|
Dump_4_Bytes: ; XXX to be adapted
|
||||||
@@ -1275,35 +1267,6 @@ Size_To_Mode:
|
|||||||
LDX #0
|
LDX #0
|
||||||
RTS
|
RTS
|
||||||
|
|
||||||
; **************
|
|
||||||
Mon_Disassemble:
|
|
||||||
; **************
|
|
||||||
|
|
||||||
JSR Get_LAC ; get 1st. parameter
|
|
||||||
BCS @nopar
|
|
||||||
JSR LAC_To_LPC ; Long_PC = start address
|
|
||||||
JSR Get_LAC ; Long_AC = end address
|
|
||||||
BCC @range
|
|
||||||
@nopar LDA #32 ; disassemble 32 bytes
|
|
||||||
STA Long_CT
|
|
||||||
BRA @loop
|
|
||||||
@range JSR LAC_Minus_LPC ; Long_CT = range
|
|
||||||
LBCC Mon_Error ; -> negative
|
|
||||||
|
|
||||||
@loop JSR CR_Erase ; prepare empty line
|
|
||||||
JSR STOP
|
|
||||||
LBEQ Main
|
|
||||||
JSR Dis_Code ; disassemble one line
|
|
||||||
INC Op_Size
|
|
||||||
LDA Op_Size
|
|
||||||
JSR Add_LPC ; advance address
|
|
||||||
LDA Long_CT
|
|
||||||
SEC
|
|
||||||
SBC Op_Size
|
|
||||||
STA Long_CT
|
|
||||||
BCS @loop
|
|
||||||
JMP Main
|
|
||||||
|
|
||||||
; *******
|
; *******
|
||||||
Dis_Code:
|
Dis_Code:
|
||||||
; *******
|
; *******
|
||||||
@@ -1397,8 +1360,7 @@ Print_Code:
|
|||||||
|
|
||||||
; detect long branches
|
; detect long branches
|
||||||
|
|
||||||
@long LDA #KEY_YELLOW
|
@long JSR Print_Attr_Bold
|
||||||
JSR CHROUT
|
|
||||||
LDX Op_Code
|
LDX Op_Code
|
||||||
LDA LEN_ADM,X
|
LDA LEN_ADM,X
|
||||||
CMP #%10100000 ; long branch mode
|
CMP #%10100000 ; long branch mode
|
||||||
@@ -1475,8 +1437,7 @@ Print_Code:
|
|||||||
|
|
||||||
@mne4 JSR Print_Blank
|
@mne4 JSR Print_Blank
|
||||||
@mne5 JSR Print_Blank
|
@mne5 JSR Print_Blank
|
||||||
LDA #KEY_WHITE
|
JSR Print_Attr_NoBold
|
||||||
JSR CHROUT
|
|
||||||
|
|
||||||
; check for accumulator operand
|
; check for accumulator operand
|
||||||
|
|
||||||
|
|||||||
@@ -0,0 +1,50 @@
|
|||||||
|
|
||||||
|
; Based on BSM (Bit Shifter's Monitor)
|
||||||
|
|
||||||
|
Mon_Disassemble:
|
||||||
|
|
||||||
|
lda Adr_Mode
|
||||||
|
pha ; store addressing mode, in case no parameter is given
|
||||||
|
lda #$00
|
||||||
|
sta Adr_Mode ; by default use C64-style addressing
|
||||||
|
|
||||||
|
jsr Get_Addr_To_LAC ; get 1st parameter (start address)
|
||||||
|
beq @nopar
|
||||||
|
pla ; drop previous addressing mode
|
||||||
|
jsr LAC_To_LPC ; Long_PC = start address
|
||||||
|
jsr Get_Addr_To_LAC ; get 2nd parameter (end address)
|
||||||
|
bne @range
|
||||||
|
|
||||||
|
@nopar:
|
||||||
|
|
||||||
|
pla ; retrieve old addressing mode
|
||||||
|
sta Adr_Mode
|
||||||
|
|
||||||
|
lda #$20 ; by default disassemble 32 addresses
|
||||||
|
sta Long_CT+0
|
||||||
|
lda #$00
|
||||||
|
sta Long_CT+1
|
||||||
|
sta Long_CT+2
|
||||||
|
sta Long_CT+3
|
||||||
|
bra @loop
|
||||||
|
|
||||||
|
@range:
|
||||||
|
|
||||||
|
jsr LAC_Minus_LPC ; Long_CT = range
|
||||||
|
+bcc Mon_Error ; -> negative
|
||||||
|
|
||||||
|
@loop:
|
||||||
|
|
||||||
|
jsr CR_Erase ; prepare empty line
|
||||||
|
jsr STOP
|
||||||
|
+beq Main
|
||||||
|
jsr Dis_Code ; disassemble one line
|
||||||
|
inc Op_Size
|
||||||
|
lda Op_Size
|
||||||
|
jsr Add_LPC ; advance address
|
||||||
|
lda Long_CT
|
||||||
|
sec
|
||||||
|
sbc Op_Size
|
||||||
|
sta Long_CT
|
||||||
|
bcs @loop
|
||||||
|
jmp Main
|
||||||
@@ -4,6 +4,9 @@
|
|||||||
|
|
||||||
Get_From_Memory:
|
Get_From_Memory:
|
||||||
|
|
||||||
|
; XXX consider temporarily switching off $C000-$CFFF ROM
|
||||||
|
; XXX consider using long mode for addresses below $8000 always
|
||||||
|
|
||||||
phx
|
phx
|
||||||
phy
|
phy
|
||||||
phz
|
phz
|
||||||
@@ -12,59 +15,63 @@ Get_From_Memory:
|
|||||||
|
|
||||||
clc
|
clc
|
||||||
tza
|
tza
|
||||||
adc Long_PC+0
|
adc Long_PC+0
|
||||||
sta Long_TMP+0
|
sta Long_TMP+0
|
||||||
|
|
||||||
ldx #$01
|
ldx #$01
|
||||||
@1:
|
@1:
|
||||||
lda Long_PC+0,x
|
lda Long_PC+0,x
|
||||||
adc #$00
|
adc #$00
|
||||||
sta Long_TMP+0,x
|
sta Long_TMP+0,x
|
||||||
inx
|
inx
|
||||||
cpx #$04
|
cpx #$04
|
||||||
bne @1
|
bne @1
|
||||||
|
|
||||||
ldz #$00
|
ldz #$00
|
||||||
|
|
||||||
; Check addressing mode
|
; Check addressing mode
|
||||||
|
|
||||||
bbs7 Adr_Mode, @mode_flat
|
bbs7 Adr_Mode, @mode_flat
|
||||||
|
|
||||||
@mode_64k:
|
@mode_64k:
|
||||||
|
|
||||||
lda Long_TMP+1
|
lda #$00 ; make sure this is 64K address
|
||||||
bne @read ; branch if no need to handle shadow memory (not zero page)
|
sta Long_TMP+2
|
||||||
lda Long_TMP+0
|
sta Long_TMP+3
|
||||||
|
|
||||||
|
lda Long_TMP+1
|
||||||
|
bne @read ; branch if no need to handle shadow memory (not zero page)
|
||||||
|
lda Long_TMP+0
|
||||||
dec
|
dec
|
||||||
dec
|
dec
|
||||||
cmp #$8E
|
cmp #$8E
|
||||||
bcs @read ; branch if no need to handle shadow memory (0, 1, or above $8F)
|
bcs @read ; branch if no need to handle shadow memory (0, 1, or above $8F)
|
||||||
@2:
|
@2:
|
||||||
sta Long_TMP+0
|
sta Long_TMP+0
|
||||||
bra @read_shadow
|
bra @read_shadow
|
||||||
|
|
||||||
@mode_flat:
|
@mode_flat:
|
||||||
|
|
||||||
lda Long_TMP+3
|
lda Long_TMP+3
|
||||||
ora Long_TMP+2
|
ora Long_TMP+2
|
||||||
ora Long_TMP+1
|
ora Long_TMP+1
|
||||||
bne @read_flat
|
bne @read_flat
|
||||||
|
|
||||||
lda Long_TMP+0
|
lda Long_TMP+0
|
||||||
dec
|
dec
|
||||||
dec
|
dec
|
||||||
cmp #$8E
|
cmp #$8E
|
||||||
bcs @read_flat
|
bcs @read_flat
|
||||||
bra @2
|
bra @2
|
||||||
|
|
||||||
@read_shadow:
|
@read_shadow:
|
||||||
|
|
||||||
lda #MEMCONF_SHADOW_BZP_1
|
lda #MEMCONF_SHADOW_BZP_1
|
||||||
sta Long_TMP+1
|
sta Long_TMP+1
|
||||||
lda #MEMCONF_SHADOW_BZP_2
|
lda #MEMCONF_SHADOW_BZP_2
|
||||||
sta Long_TMP+2
|
sta Long_TMP+2
|
||||||
lda #MEMCONF_SHADOW_BZP_3
|
lda #MEMCONF_SHADOW_BZP_3
|
||||||
sta Long_TMP+3
|
sta Long_TMP+3
|
||||||
|
|
||||||
@read_flat:
|
@read_flat:
|
||||||
+nop
|
+nop
|
||||||
|
|||||||
@@ -4,24 +4,24 @@
|
|||||||
|
|
||||||
Print_Attr_Bold:
|
Print_Attr_Bold:
|
||||||
|
|
||||||
jsr Print_Attr_Common1
|
jsr Print_Attr_Common1
|
||||||
lda #'s'
|
lda #'s'
|
||||||
bra Print_Attr_Common2
|
bra Print_Attr_Common2
|
||||||
|
|
||||||
Print_Attr_NoBold:
|
Print_Attr_NoBold:
|
||||||
|
|
||||||
jsr Print_Attr_Common1
|
jsr Print_Attr_Common1
|
||||||
lda #'u'
|
lda #'u'
|
||||||
|
|
||||||
; FALLTROUGH
|
; FALLTROUGH
|
||||||
|
|
||||||
Print_Attr_Common2:
|
Print_Attr_Common2:
|
||||||
|
|
||||||
jmp CHROUT
|
jmp CHROUT
|
||||||
|
|
||||||
Print_Attr_Common1:
|
Print_Attr_Common1:
|
||||||
|
|
||||||
lda #$00
|
lda #$00
|
||||||
sta QTSW ; make sure quote mode is disabled
|
sta QTSW ; make sure quote mode is disabled
|
||||||
lda #KEY_ESC
|
lda #KEY_ESC
|
||||||
jmp CHROUT
|
jmp CHROUT
|
||||||
Reference in new issue
Block a user