44 lines
727 B
ArmAsm
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
|