1 |
7 |
pradd |
_init_nand_data_line:
|
2 |
|
|
;NandDataLine.c,15 :: void init_nand_data_line()
|
3 |
|
|
;NandDataLine.c,17 :: TRISE = 0;
|
4 |
|
|
SW R0, Offset(TRISE+0)(GP)
|
5 |
|
|
;NandDataLine.c,18 :: TRISF = 0;
|
6 |
|
|
SW R0, Offset(TRISF+0)(GP)
|
7 |
|
|
;NandDataLine.c,19 :: TRISG = 0;
|
8 |
|
|
SW R0, Offset(TRISG+0)(GP)
|
9 |
|
|
;NandDataLine.c,21 :: LATE = 0;
|
10 |
|
|
SW R0, Offset(LATE+0)(GP)
|
11 |
|
|
;NandDataLine.c,22 :: LATF = 0;
|
12 |
|
|
SW R0, Offset(LATF+0)(GP)
|
13 |
|
|
;NandDataLine.c,23 :: LATG = 0;
|
14 |
|
|
SW R0, Offset(LATG+0)(GP)
|
15 |
|
|
;NandDataLine.c,25 :: nand_b0 = 0;
|
16 |
|
|
LUI R2, BitMask(LATE2_bit+0)
|
17 |
|
|
ORI R2, R2, BitMask(LATE2_bit+0)
|
18 |
|
|
_SX
|
19 |
|
|
;NandDataLine.c,26 :: nand_b1 = 0;
|
20 |
|
|
LUI R2, BitMask(LATE3_bit+0)
|
21 |
|
|
ORI R2, R2, BitMask(LATE3_bit+0)
|
22 |
|
|
_SX
|
23 |
|
|
;NandDataLine.c,27 :: nand_b2 = 0;
|
24 |
|
|
LUI R2, BitMask(LATG7_bit+0)
|
25 |
|
|
ORI R2, R2, BitMask(LATG7_bit+0)
|
26 |
|
|
_SX
|
27 |
|
|
;NandDataLine.c,28 :: nand_b3 = 0;
|
28 |
|
|
LUI R2, BitMask(LATG8_bit+0)
|
29 |
|
|
ORI R2, R2, BitMask(LATG8_bit+0)
|
30 |
|
|
_SX
|
31 |
|
|
;NandDataLine.c,29 :: nand_b4 = 0;
|
32 |
|
|
LUI R2, BitMask(LATF5_bit+0)
|
33 |
|
|
ORI R2, R2, BitMask(LATF5_bit+0)
|
34 |
|
|
_SX
|
35 |
|
|
;NandDataLine.c,30 :: nand_b5 = 0;
|
36 |
|
|
LUI R2, BitMask(LATF4_bit+0)
|
37 |
|
|
ORI R2, R2, BitMask(LATF4_bit+0)
|
38 |
|
|
_SX
|
39 |
|
|
;NandDataLine.c,31 :: nand_b6 = 0;
|
40 |
|
|
LUI R2, BitMask(LATE4_bit+0)
|
41 |
|
|
ORI R2, R2, BitMask(LATE4_bit+0)
|
42 |
|
|
_SX
|
43 |
|
|
;NandDataLine.c,32 :: nand_b7 = 0;
|
44 |
|
|
LUI R2, BitMask(LATE5_bit+0)
|
45 |
|
|
ORI R2, R2, BitMask(LATE5_bit+0)
|
46 |
|
|
_SX
|
47 |
|
|
;NandDataLine.c,33 :: }
|
48 |
|
|
L_end_init_nand_data_line:
|
49 |
|
|
JR RA
|
50 |
|
|
NOP
|
51 |
|
|
; end of _init_nand_data_line
|
52 |
|
|
_data_line_write_byte:
|
53 |
|
|
;NandDataLine.c,38 :: void data_line_write_byte(unsigned char b)
|
54 |
|
|
;NandDataLine.c,40 :: if(data_line_last_op != NAND_LAST_OP_WRITE)
|
55 |
|
|
LH R3, Offset(_data_line_last_op+0)(GP)
|
56 |
|
|
ORI R2, R0, 1
|
57 |
|
|
BNE R3, R2, L__data_line_write_byte5
|
58 |
|
|
NOP
|
59 |
|
|
J L_data_line_write_byte0
|
60 |
|
|
NOP
|
61 |
|
|
L__data_line_write_byte5:
|
62 |
|
|
;NandDataLine.c,42 :: TRISE2_bit = 0; TRISE3_bit = 0; TRISE4_bit = 0; TRISE5_bit = 0;
|
63 |
|
|
LUI R2, BitMask(TRISE2_bit+0)
|
64 |
|
|
ORI R2, R2, BitMask(TRISE2_bit+0)
|
65 |
|
|
_SX
|
66 |
|
|
LUI R2, BitMask(TRISE3_bit+0)
|
67 |
|
|
ORI R2, R2, BitMask(TRISE3_bit+0)
|
68 |
|
|
_SX
|
69 |
|
|
LUI R2, BitMask(TRISE4_bit+0)
|
70 |
|
|
ORI R2, R2, BitMask(TRISE4_bit+0)
|
71 |
|
|
_SX
|
72 |
|
|
LUI R2, BitMask(TRISE5_bit+0)
|
73 |
|
|
ORI R2, R2, BitMask(TRISE5_bit+0)
|
74 |
|
|
_SX
|
75 |
|
|
;NandDataLine.c,43 :: TRISF4_bit = 0; TRISF5_bit = 0;
|
76 |
|
|
LUI R2, BitMask(TRISF4_bit+0)
|
77 |
|
|
ORI R2, R2, BitMask(TRISF4_bit+0)
|
78 |
|
|
_SX
|
79 |
|
|
LUI R2, BitMask(TRISF5_bit+0)
|
80 |
|
|
ORI R2, R2, BitMask(TRISF5_bit+0)
|
81 |
|
|
_SX
|
82 |
|
|
;NandDataLine.c,44 :: TRISG7_bit = 0; TRISG8_bit = 0;
|
83 |
|
|
LUI R2, BitMask(TRISG7_bit+0)
|
84 |
|
|
ORI R2, R2, BitMask(TRISG7_bit+0)
|
85 |
|
|
_SX
|
86 |
|
|
LUI R2, BitMask(TRISG8_bit+0)
|
87 |
|
|
ORI R2, R2, BitMask(TRISG8_bit+0)
|
88 |
|
|
_SX
|
89 |
|
|
;NandDataLine.c,45 :: data_line_last_op = NAND_LAST_OP_WRITE;
|
90 |
|
|
ORI R2, R0, 1
|
91 |
|
|
SH R2, Offset(_data_line_last_op+0)(GP)
|
92 |
|
|
;NandDataLine.c,46 :: }
|
93 |
|
|
L_data_line_write_byte0:
|
94 |
|
|
;NandDataLine.c,47 :: nand_b0 = (b) & 1;
|
95 |
|
|
ANDI R3, R25, 1
|
96 |
|
|
_LX
|
97 |
|
|
INS R2, R3, BitPos(LATE2_bit+0), 1
|
98 |
|
|
_SX
|
99 |
|
|
;NandDataLine.c,48 :: nand_b1 = (b >> 1) & 1;
|
100 |
|
|
ANDI R2, R25, 255
|
101 |
|
|
SRL R2, R2, 1
|
102 |
|
|
ANDI R3, R2, 1
|
103 |
|
|
_LX
|
104 |
|
|
INS R2, R3, BitPos(LATE3_bit+0), 1
|
105 |
|
|
_SX
|
106 |
|
|
;NandDataLine.c,49 :: nand_b2 = (b >> 2) & 1;
|
107 |
|
|
ANDI R2, R25, 255
|
108 |
|
|
SRL R2, R2, 2
|
109 |
|
|
ANDI R3, R2, 1
|
110 |
|
|
_LX
|
111 |
|
|
INS R2, R3, BitPos(LATG7_bit+0), 1
|
112 |
|
|
_SX
|
113 |
|
|
;NandDataLine.c,50 :: nand_b3 = (b >> 3) & 1;
|
114 |
|
|
ANDI R2, R25, 255
|
115 |
|
|
SRL R2, R2, 3
|
116 |
|
|
ANDI R3, R2, 1
|
117 |
|
|
_LX
|
118 |
|
|
INS R2, R3, BitPos(LATG8_bit+0), 1
|
119 |
|
|
_SX
|
120 |
|
|
;NandDataLine.c,51 :: nand_b4 = (b >> 4) & 1;
|
121 |
|
|
ANDI R2, R25, 255
|
122 |
|
|
SRL R2, R2, 4
|
123 |
|
|
ANDI R3, R2, 1
|
124 |
|
|
_LX
|
125 |
|
|
INS R2, R3, BitPos(LATF5_bit+0), 1
|
126 |
|
|
_SX
|
127 |
|
|
;NandDataLine.c,52 :: nand_b5 = (b >> 5) & 1;
|
128 |
|
|
ANDI R2, R25, 255
|
129 |
|
|
SRL R2, R2, 5
|
130 |
|
|
ANDI R3, R2, 1
|
131 |
|
|
_LX
|
132 |
|
|
INS R2, R3, BitPos(LATF4_bit+0), 1
|
133 |
|
|
_SX
|
134 |
|
|
;NandDataLine.c,53 :: nand_b6 = (b >> 6) & 1;
|
135 |
|
|
ANDI R2, R25, 255
|
136 |
|
|
SRL R2, R2, 6
|
137 |
|
|
ANDI R3, R2, 1
|
138 |
|
|
_LX
|
139 |
|
|
INS R2, R3, BitPos(LATE4_bit+0), 1
|
140 |
|
|
_SX
|
141 |
|
|
;NandDataLine.c,54 :: nand_b7 = (b >> 7) & 1;
|
142 |
|
|
ANDI R2, R25, 255
|
143 |
|
|
SRL R2, R2, 7
|
144 |
|
|
ANDI R3, R2, 1
|
145 |
|
|
_LX
|
146 |
|
|
INS R2, R3, BitPos(LATE5_bit+0), 1
|
147 |
|
|
_SX
|
148 |
|
|
;NandDataLine.c,55 :: asm NOP;
|
149 |
|
|
NOP
|
150 |
|
|
;NandDataLine.c,56 :: asm NOP;
|
151 |
|
|
NOP
|
152 |
|
|
;NandDataLine.c,57 :: asm NOP;
|
153 |
|
|
NOP
|
154 |
|
|
;NandDataLine.c,58 :: }
|
155 |
|
|
L_end_data_line_write_byte:
|
156 |
|
|
JR RA
|
157 |
|
|
NOP
|
158 |
|
|
; end of _data_line_write_byte
|
159 |
|
|
_data_line_read_byte:
|
160 |
|
|
;NandDataLine.c,61 :: unsigned char data_line_read_byte()
|
161 |
|
|
;NandDataLine.c,63 :: unsigned char d = 0;
|
162 |
|
|
; d start address is: 16 (R4)
|
163 |
|
|
MOVZ R4, R0, R0
|
164 |
|
|
;NandDataLine.c,64 :: if(data_line_last_op != NAND_LAST_OP_READ)
|
165 |
|
|
LH R2, Offset(_data_line_last_op+0)(GP)
|
166 |
|
|
BNE R2, R0, L__data_line_read_byte8
|
167 |
|
|
NOP
|
168 |
|
|
J L_data_line_read_byte1
|
169 |
|
|
NOP
|
170 |
|
|
L__data_line_read_byte8:
|
171 |
|
|
;NandDataLine.c,66 :: TRISE2_bit = 1; TRISE3_bit = 1; TRISE4_bit = 1; TRISE5_bit = 1;
|
172 |
|
|
LUI R2, BitMask(TRISE2_bit+0)
|
173 |
|
|
ORI R2, R2, BitMask(TRISE2_bit+0)
|
174 |
|
|
_SX
|
175 |
|
|
LUI R2, BitMask(TRISE3_bit+0)
|
176 |
|
|
ORI R2, R2, BitMask(TRISE3_bit+0)
|
177 |
|
|
_SX
|
178 |
|
|
LUI R2, BitMask(TRISE4_bit+0)
|
179 |
|
|
ORI R2, R2, BitMask(TRISE4_bit+0)
|
180 |
|
|
_SX
|
181 |
|
|
LUI R2, BitMask(TRISE5_bit+0)
|
182 |
|
|
ORI R2, R2, BitMask(TRISE5_bit+0)
|
183 |
|
|
_SX
|
184 |
|
|
;NandDataLine.c,67 :: TRISF4_bit = 1; TRISF5_bit = 1;
|
185 |
|
|
LUI R2, BitMask(TRISF4_bit+0)
|
186 |
|
|
ORI R2, R2, BitMask(TRISF4_bit+0)
|
187 |
|
|
_SX
|
188 |
|
|
LUI R2, BitMask(TRISF5_bit+0)
|
189 |
|
|
ORI R2, R2, BitMask(TRISF5_bit+0)
|
190 |
|
|
_SX
|
191 |
|
|
;NandDataLine.c,68 :: TRISG7_bit = 1; TRISG8_bit = 1;
|
192 |
|
|
LUI R2, BitMask(TRISG7_bit+0)
|
193 |
|
|
ORI R2, R2, BitMask(TRISG7_bit+0)
|
194 |
|
|
_SX
|
195 |
|
|
LUI R2, BitMask(TRISG8_bit+0)
|
196 |
|
|
ORI R2, R2, BitMask(TRISG8_bit+0)
|
197 |
|
|
_SX
|
198 |
|
|
;NandDataLine.c,69 :: data_line_last_op = NAND_LAST_OP_READ;
|
199 |
|
|
SH R0, Offset(_data_line_last_op+0)(GP)
|
200 |
|
|
;NandDataLine.c,70 :: }
|
201 |
|
|
L_data_line_read_byte1:
|
202 |
|
|
;NandDataLine.c,71 :: d |= (unsigned char)PORTE.B2;//nand_b0;
|
203 |
|
|
LBU R2, Offset(PORTE+0)(GP)
|
204 |
|
|
EXT R2, R2, 2, 1
|
205 |
|
|
OR R3, R4, R2
|
206 |
|
|
; d end address is: 16 (R4)
|
207 |
|
|
;NandDataLine.c,72 :: d |= ((unsigned char)PORTE.B3 << 1);//nand_b1 << 1);
|
208 |
|
|
LBU R2, Offset(PORTE+0)(GP)
|
209 |
|
|
EXT R2, R2, 3, 1
|
210 |
|
|
ANDI R2, R2, 255
|
211 |
|
|
SLL R2, R2, 1
|
212 |
|
|
OR R3, R3, R2
|
213 |
|
|
;NandDataLine.c,73 :: d |= ((unsigned char)PORTG.B7 << 2);//nand_b2 << 2);
|
214 |
|
|
LBU R2, Offset(PORTG+0)(GP)
|
215 |
|
|
EXT R2, R2, 7, 1
|
216 |
|
|
ANDI R2, R2, 255
|
217 |
|
|
SLL R2, R2, 2
|
218 |
|
|
OR R3, R3, R2
|
219 |
|
|
;NandDataLine.c,74 :: d |= ((unsigned char)PORTG.B8 << 3);//nand_b3 << 3);
|
220 |
|
|
LBU R2, Offset(PORTG+1)(GP)
|
221 |
|
|
EXT R2, R2, 0, 1
|
222 |
|
|
ANDI R2, R2, 255
|
223 |
|
|
SLL R2, R2, 3
|
224 |
|
|
OR R3, R3, R2
|
225 |
|
|
;NandDataLine.c,75 :: d |= ((unsigned char)PORTF.B5 << 4);//nand_b4 << 4);
|
226 |
|
|
LBU R2, Offset(PORTF+0)(GP)
|
227 |
|
|
EXT R2, R2, 5, 1
|
228 |
|
|
ANDI R2, R2, 255
|
229 |
|
|
SLL R2, R2, 4
|
230 |
|
|
OR R3, R3, R2
|
231 |
|
|
;NandDataLine.c,76 :: d |= ((unsigned char)PORTF.B4 << 5);//nand_b5 << 5);
|
232 |
|
|
LBU R2, Offset(PORTF+0)(GP)
|
233 |
|
|
EXT R2, R2, 4, 1
|
234 |
|
|
ANDI R2, R2, 255
|
235 |
|
|
SLL R2, R2, 5
|
236 |
|
|
OR R3, R3, R2
|
237 |
|
|
;NandDataLine.c,77 :: d |= ((unsigned char)PORTE.B4 << 6);//nand_b6 << 6);
|
238 |
|
|
LBU R2, Offset(PORTE+0)(GP)
|
239 |
|
|
EXT R2, R2, 4, 1
|
240 |
|
|
ANDI R2, R2, 255
|
241 |
|
|
SLL R2, R2, 6
|
242 |
|
|
OR R3, R3, R2
|
243 |
|
|
;NandDataLine.c,78 :: d |= ((unsigned char)PORTE.B5 << 7);//nand_b7 << 7);
|
244 |
|
|
LBU R2, Offset(PORTE+0)(GP)
|
245 |
|
|
EXT R2, R2, 5, 1
|
246 |
|
|
ANDI R2, R2, 255
|
247 |
|
|
SLL R2, R2, 7
|
248 |
|
|
OR R2, R3, R2
|
249 |
|
|
;NandDataLine.c,79 :: return d;
|
250 |
|
|
;NandDataLine.c,80 :: }
|
251 |
|
|
L_end_data_line_read_byte:
|
252 |
|
|
JR RA
|
253 |
|
|
NOP
|
254 |
|
|
; end of _data_line_read_byte
|