; Author: Frederik Noring <noring@nocrew.org>
;
; This file is subject to the terms and conditions of the GNU General Public
; License. See the file COPYING in the main directory of this archive
; for more details.
; DSP56k loader
; Host Interface
M_BCR EQU $FFFE ; Port A Bus Control Register
M_PBC EQU $FFE0 ; Port B Control Register
M_PBDDR EQU $FFE2 ; Port B Data Direction Register
M_PBD EQU $FFE4 ; Port B Data Register
M_PCC EQU $FFE1 ; Port C Control Register
M_PCDDR EQU $FFE3 ; Port C Data Direction Register
M_PCD EQU $FFE5 ; Port C Data Register
M_HCR EQU $FFE8 ; Host Control Register
M_HSR EQU $FFE9 ; Host Status Register
M_HRX EQU $FFEB ; Host Receive Data Register
M_HTX EQU $FFEB ; Host Transmit Data Register
; SSI, Synchronous Serial Interface
M_RX EQU $FFEF ; Serial Receive Data Register
M_TX EQU $FFEF ; Serial Transmit Data Register
M_CRA EQU $FFEC ; SSI Control Register A
M_CRB EQU $FFED ; SSI Control Register B
M_SR EQU $FFEE ; SSI Status Register
M_TSR EQU $FFEE ; SSI Time Slot Register
; Exception Processing
M_IPR EQU $FFFF ; Interrupt Priority Register
org P:$0
start jmp <$40
org P:$40
; ; Zero 16384 DSP X and Y words
; clr A
; clr B
; do
; rep
; move A,X:(r0)+ B,Y:(r4)+
;_block1 ; Zero (32768-512) Program words
; clr A
; do
; rep
; move A,P:(r0)+
;_block2
; Copy DSP program control
move
move
do
movem P:(r0)+,x0
movem x0,P:(r1)+
_copy movep
movep
and
jmp upload
real
org P:$7ea9
upload
movep
movep
next jclr
movep X:<<M_HRX,A
move
cmp x0,A
jeq <$0
_get_address
jclr
movep X:<<M_HRX,r0
_get_length
jclr
movep X:<<M_HRX,y0
cmp x0,A
jeq load_X
cmp x0,A
jeq load_Y
load_P do y0,_load_P
jclr
movep X:<<M_HRX,P:(r0)+
_load_P jmp next
load_X do y0,_load_X
jclr
movep X:<<M_HRX,X:(r0)+
_load_X jmp next
load_Y do y0,_load_Y
jclr
movep X:<<M_HRX,Y:(r0)+
_load_Y jmp next
upload_end
end