Files
open-roms/src/mon_m65/mon_command_transfer.s
T

44 lines
727 B
ArmAsm

; Based on BSM (Bit Shifter's Monitor)
Mon_Transfer:
jsr Get_Param_Range ; Long_PC = source
; Long_CT = count
jsr Get_Val_To_LAC ; Long_AC = target
+beq Mon_Error
lda Src_Addr_Mode
ora Dst_Addr_Mode
sta Addr_Mode
ldz #0
jsr LAC_Compare_LPC ; target - source
bcc @forward
; source < target: backward transfer
jsr LAC_Plus_LCT ; Long_AC = end of target
@lpback:
jsr Get_From_Memory_LDA ; backward copy
jsr Put_To_Memory_LAC
jsr Dec_LDA
jsr Dec_LAC
jsr Dec_LCT
bpl @lpback
jmp Main
@forward:
jsr Get_From_Memory_LPC ; forward copy
jsr Put_To_Memory_LAC
jsr Inc_LPC
jsr Inc_LAC
jsr Dec_LCT
bpl @forward
jmp Main