diff --git a/src/mon_m65/bsmon.s b/src/mon_m65/bsmon.s index 5234d254..ec73f38c 100644 --- a/src/mon_m65/bsmon.s +++ b/src/mon_m65/bsmon.s @@ -399,64 +399,6 @@ Fetch: AND #$ff RTS -; ********* -Mon_Memory: -; ********* - - lda #$00 - sta Adr_Mode ; by default use C64-style addressing - - jsr Get_Addr_To_LAC ; get 1st parameter (start address) - +beq Mon_Error - jsr LAC_To_LPC ; Long_PC = start address - - jsr Get_Addr_To_LAC ; get 2nd parameter (end address) - bne @got_end_address - jsr LPC_Plus_Page_To_LAC ; set default end address by start plus one page - -@got_end_address: - - jsr LAC_Minus_LPC ; Long_CT = range - +bcc Mon_Error ; error if negative range - -@loop: - - jsr Print_CR ; XXX for debug only - lda Long_CT+3 - jsr Print_Hex - lda Long_CT+2 - jsr Print_Hex - lda Long_CT+1 - jsr Print_Hex - lda Long_CT+0 - jsr Print_Hex - - jsr Dump_Row - - jsr Print_CR ; XXX for debug only - lda Long_CT+3 - jsr Print_Hex - lda Long_CT+2 - jsr Print_Hex - lda Long_CT+1 - jsr Print_Hex - lda Long_CT+0 - jsr Print_Hex - jsr Print_CR - - jsr STOP - beq @exit - - - ; !!! loop till end reached - - - - - -@exit: - - jmp Main ; ********* @@ -623,8 +565,6 @@ Dump_4_Chars: ; XXX to be adapted Dump_Row: ; ******* - JSR Set_MODE_80 - PHZ JSR Print_CR LDA #'>' diff --git a/src/mon_m65/mon_imports.s b/src/mon_m65/imports.s similarity index 100% rename from src/mon_m65/mon_imports.s rename to src/mon_m65/imports.s diff --git a/src/mon_m65/mon_command_memory.s b/src/mon_m65/mon_command_memory.s new file mode 100644 index 00000000..2e460cbe --- /dev/null +++ b/src/mon_m65/mon_command_memory.s @@ -0,0 +1,65 @@ + +Mon_Memory: + + jsr Set_MODE_80 + lda #$00 + sta Adr_Mode ; by default use C64-style addressing + + jsr Get_Addr_To_LAC ; get 1st parameter (start address) + +beq Mon_Error + jsr LAC_To_LPC ; Long_PC = start address + + jsr Get_Addr_To_LAC ; get 2nd parameter (end address) + bne @calcdiff + + lda #$10 ; by default display 16 rows + sta Long_CT+0 + lda #$00 + sta Long_CT+1 + sta Long_CT+2 + sta Long_CT+3 + + bra @loop + +@calcdiff: + jsr LAC_Minus_LPC ; Long_CT = range + +bcc Mon_Error ; error if negative range + + ldx #$04 ; for 80 character mode - 16 (2^4) bytes/line + bbr7 MODE_80,@shift + dex ; for 40 character mode - 8 (2^3) bytes/line + +@shift: + clc + ror Long_CT+3 + ror Long_CT+2 + ror Long_CT+1 + ror Long_CT+0 + + dex + bne @shift ; at the ned of loop Long_CT contains number of rows to show minus 1 + +@loop: + + jsr Dump_Row + jsr STOP + beq @exit ; end if STOP pressed + + sec ; XXX consider moving this to separate subroutine + lda Long_CT+0 + sbc #$01 + sta Long_CT+0 + lda Long_CT+1 + sbc #$00 + sta Long_CT+1 + lda Long_CT+2 + sbc #$00 + sta Long_CT+2 + lda Long_CT+3 + sbc #$00 + sta Long_CT+3 + bcs @loop + +@exit: + + jmp Main diff --git a/src/mon_m65/mon_get_addr_to_lac.s b/src/mon_m65/mon_helper_get_addr_to_lac.s similarity index 100% rename from src/mon_m65/mon_get_addr_to_lac.s rename to src/mon_m65/mon_helper_get_addr_to_lac.s