mirror of
https://github.com/garrettsworkshop/ROMBUSDriver.git
synced 2024-11-22 01:32:14 +00:00
35 lines
594 B
ArmAsm
35 lines
594 B
ArmAsm
.macro xfer_in from, to
|
|
move.w (%A0), (%A1)+
|
|
nop
|
|
nop
|
|
nop
|
|
.if \to-\from
|
|
xfer_in "(\from+1)"
|
|
.else
|
|
|
|
.endif
|
|
.endm
|
|
|
|
|
|
;pragma parameter xfer_s_256(__A0, __A1)
|
|
;void xfer_s_256(Ptr srcreg, Ptr destmem);
|
|
xfer_256:
|
|
movem.l %D0/%A1-%A2, -(%SP)
|
|
xfer_256_loop:
|
|
xfer_s_in 0, 255
|
|
xfer_256_end:
|
|
movem.l (%SP)+, %D0/%A1-%A2
|
|
|
|
|
|
;pragma parameter xfer_s(__D0, __A0, __A1)
|
|
;void xfer_s(uint8_t numBytes, Ptr srcreg, Ptr destmem);
|
|
xfer:
|
|
movem.l %D0/%A1-%A2, -(%SP)
|
|
andi.l #0xFF, %D0
|
|
subi.l #256, %D0
|
|
neg.l %D0
|
|
lsl.l #2, %D0
|
|
addi.l #xfer_256, %D0
|
|
movea.l %D0, %A2
|
|
jmp %A2
|