blob: a411047e6db35b4b91727f23ce180bc6053ca112 [file] [log] [blame]
Jaswinder Singh7f127d52008-07-05 15:28:30 +05301; Author: Frederik Noring <noring@nocrew.org>
2;
3; This file is subject to the terms and conditions of the GNU General Public
4; License. See the file COPYING in the main directory of this archive
5; for more details.
6
7; DSP56k loader
8
9; Host Interface
10M_BCR EQU $FFFE ; Port A Bus Control Register
11M_PBC EQU $FFE0 ; Port B Control Register
12M_PBDDR EQU $FFE2 ; Port B Data Direction Register
13M_PBD EQU $FFE4 ; Port B Data Register
14M_PCC EQU $FFE1 ; Port C Control Register
15M_PCDDR EQU $FFE3 ; Port C Data Direction Register
16M_PCD EQU $FFE5 ; Port C Data Register
17
18M_HCR EQU $FFE8 ; Host Control Register
19M_HSR EQU $FFE9 ; Host Status Register
20M_HRX EQU $FFEB ; Host Receive Data Register
21M_HTX EQU $FFEB ; Host Transmit Data Register
22
23; SSI, Synchronous Serial Interface
24M_RX EQU $FFEF ; Serial Receive Data Register
25M_TX EQU $FFEF ; Serial Transmit Data Register
26M_CRA EQU $FFEC ; SSI Control Register A
27M_CRB EQU $FFED ; SSI Control Register B
28M_SR EQU $FFEE ; SSI Status Register
29M_TSR EQU $FFEE ; SSI Time Slot Register
30
31; Exception Processing
32M_IPR EQU $FFFF ; Interrupt Priority Register
33
34 org P:$0
35start jmp <$40
36
37 org P:$40
38; ; Zero 16384 DSP X and Y words
39; clr A #0,r0
40; clr B #0,r4
41; do #64,<_block1
42; rep #256
43; move A,X:(r0)+ B,Y:(r4)+
44;_block1 ; Zero (32768-512) Program words
45; clr A #512,r0
46; do #126,<_block2
47; rep #256
48; move A,P:(r0)+
49;_block2
50
51 ; Copy DSP program control
52 move #real,r0
53 move #upload,r1
Robert Millan842ffab2009-01-06 14:42:52 -080054 do #upload_end-upload,_copy
55 movem P:(r0)+,x0
56 movem x0,P:(r1)+
57_copy movep #4,X:<<M_HCR
58 movep #$c00,X:<<M_IPR
Jaswinder Singh7f127d52008-07-05 15:28:30 +053059 and #<$fe,mr
60 jmp upload
61
62real
63 org P:$7ea9
64upload
Robert Millan842ffab2009-01-06 14:42:52 -080065 movep #1,X:<<M_PBC
66 movep #0,X:<<M_BCR
Jaswinder Singh7f127d52008-07-05 15:28:30 +053067
68next jclr #0,X:<<M_HSR,*
69 movep X:<<M_HRX,A
70 move #>3,x0
71 cmp x0,A #>1,x0
72 jeq <$0
73_get_address
74 jclr #0,X:<<M_HSR,_get_address
75 movep X:<<M_HRX,r0
76_get_length
77 jclr #0,X:<<M_HSR,_get_length
78 movep X:<<M_HRX,y0
79 cmp x0,A #>2,x0
80 jeq load_X
81 cmp x0,A
82 jeq load_Y
83
Robert Millan842ffab2009-01-06 14:42:52 -080084load_P do y0,_load_P
Jaswinder Singh7f127d52008-07-05 15:28:30 +053085 jclr #0,X:<<M_HSR,*
86 movep X:<<M_HRX,P:(r0)+
Robert Millan842ffab2009-01-06 14:42:52 -080087_load_P jmp next
88load_X do y0,_load_X
Jaswinder Singh7f127d52008-07-05 15:28:30 +053089 jclr #0,X:<<M_HSR,*
90 movep X:<<M_HRX,X:(r0)+
Robert Millan842ffab2009-01-06 14:42:52 -080091_load_X jmp next
92load_Y do y0,_load_Y
Jaswinder Singh7f127d52008-07-05 15:28:30 +053093 jclr #0,X:<<M_HSR,*
94 movep X:<<M_HRX,Y:(r0)+
Robert Millan842ffab2009-01-06 14:42:52 -080095_load_Y jmp next
Jaswinder Singh7f127d52008-07-05 15:28:30 +053096
97upload_end
98 end