Rev 889 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
507 | savelij | 1 | |
680 | savelij | 2 | ;LAST UPDATE: 01.12.2014 savelij |
507 | savelij | 3 | |
573 | savelij | 4 | ; : |
5 | ;HL- |
||
6 | ;BCDE-32- |
||
7 | ;A- (=512 ) |
||
8 | ; / |
||
507 | savelij | 9 | |
573 | savelij | 10 | ; : |
11 | ;A=0- |
||
12 | ;A=1- |
||
507 | savelij | 13 | |
14 | ; SD |
||
15 | COMSDZ EX AF,AF' |
||
16 | LD A,IYL |
||
17 | AND A |
||
18 | LD A,(NEXTBYTERST8) |
||
19 | JR Z,COMSDZ1 |
||
20 | EX (SP),HL |
||
21 | LD A,(HL) |
||
22 | INC HL |
||
23 | EX (SP),HL |
||
24 | COMSDZ1 ADD A,A |
||
25 | PUSH HL |
||
26 | LD HL,RET4SDZ |
||
27 | EX (SP),HL |
||
28 | PUSH HL |
||
29 | LD HL,TABLSDZ |
||
30 | ADD A,L |
||
31 | LD L,A |
||
32 | ADC A,H |
||
33 | SUB L |
||
34 | LD H,A |
||
761 | savelij | 35 | PEC_OFF M_SHADOW_BF |
507 | savelij | 36 | LD A,(HL) |
37 | INC HL |
||
38 | LD H,(HL) |
||
39 | LD L,A |
||
40 | EX AF,AF' |
||
41 | EX (SP),HL |
||
42 | RET |
||
43 | |||
44 | RET4SDZ PUSH AF |
||
45 | LD A,IYL |
||
46 | AND A |
||
47 | JR NZ,RET4SD1 |
||
553 | savelij | 48 | LD (RREG_L),HL |
507 | savelij | 49 | EX (SP),HL |
553 | savelij | 50 | LD (RREG_F),HL |
507 | savelij | 51 | EX (SP),HL |
761 | savelij | 52 | RET4SD1 PEC_ON M_SHADOW_BF |
507 | savelij | 53 | POP AF |
54 | RET |
||
55 | |||
573 | savelij | 56 | TABLSDZ DW SD_INIT ;0 , A |
57 | ; 2 |
||
585 | savelij | 58 | DW SD_CMP ;1 SD |
573 | savelij | 59 | DW RDMULTI ;2 , - "A" |
60 | DW WRMULTI ;3 |
||
507 | savelij | 61 | |
62 | SD_INIT CALL CS_HIGH |
||
63 | LD BC,P_DATA |
||
64 | LD DE,0X10FF |
||
65 | OUT (C),E |
||
66 | DEC D |
||
67 | JR NZ,$-3 |
||
68 | XOR A |
||
69 | EX AF,AF' |
||
70 | ZAW001 LD HL,CMD00 |
||
71 | CALL OUTCOM |
||
72 | CALL IN_OOUT |
||
73 | EX AF,AF' |
||
74 | DEC A |
||
75 | JR Z,ZAW003 |
||
76 | EX AF,AF' |
||
77 | DEC A |
||
78 | JR NZ,ZAW001 |
||
79 | LD HL,CMD08 |
||
80 | CALL OUTCOM |
||
81 | CALL IN_OOUT |
||
82 | IN H,(C) |
||
83 | NOP |
||
84 | IN H,(C) |
||
85 | NOP |
||
86 | IN H,(C) |
||
87 | NOP |
||
88 | IN H,(C) |
||
89 | LD HL,0 |
||
90 | BIT 2,A |
||
91 | JR NZ,ZAW006 |
||
92 | LD H,0X40 |
||
93 | ZAW006 LD A,CMD_55 |
||
94 | CALL OUT_COM |
||
95 | CALL IN_OOUT |
||
890 | DimkaM | 96 | in (c) ;in f,(c) |
97 | in (c) ;in f,(c) |
||
507 | savelij | 98 | LD A,ACMD_41 |
99 | OUT (C),A |
||
100 | NOP |
||
101 | OUT (C),H |
||
102 | NOP |
||
103 | OUT (C),L |
||
104 | NOP |
||
105 | OUT (C),L |
||
106 | NOP |
||
107 | OUT (C),L |
||
108 | LD A,0XFF |
||
109 | OUT (C),A |
||
110 | CALL IN_OOUT |
||
111 | AND A |
||
112 | JR NZ,ZAW006 |
||
113 | ZAW004 LD A,CMD_59 |
||
114 | CALL OUT_COM |
||
115 | CALL IN_OOUT |
||
116 | AND A |
||
117 | JR NZ,ZAW004 |
||
118 | ZAW005 LD HL,CMD16 |
||
119 | CALL OUTCOM |
||
120 | CALL IN_OOUT |
||
121 | AND A |
||
122 | JR NZ,ZAW005 |
||
123 | CS_HIGH PUSH AF |
||
124 | LD A,3 |
||
125 | OUT (P_CONF),A |
||
126 | XOR A |
||
127 | OUT (P_DATA),A |
||
128 | POP AF |
||
129 | RET |
||
130 | |||
131 | ZAW003 CALL SD__OFF |
||
132 | INC A |
||
133 | RET |
||
134 | |||
135 | SD__OFF XOR A |
||
136 | OUT (P_CONF),A |
||
137 | OUT (P_DATA),A |
||
138 | RET |
||
139 | |||
140 | CS__LOW PUSH AF |
||
141 | LD A,1 |
||
142 | OUT (P_CONF),A |
||
143 | POP AF |
||
144 | RET |
||
145 | |||
146 | OUTCOM CALL CS__LOW |
||
147 | PUSH BC |
||
148 | LD BC,0X0600+P_DATA |
||
149 | OTIR |
||
150 | POP BC |
||
151 | RET |
||
152 | |||
153 | OUT_COM PUSH BC |
||
154 | CALL CS__LOW |
||
155 | LD BC,P_DATA |
||
890 | DimkaM | 156 | in (c) ;in f,(c) |
157 | in (c) ;in f,(c) |
||
507 | savelij | 158 | OUT (C),A |
159 | XOR A |
||
160 | OUT (C),A |
||
161 | NOP |
||
162 | OUT (C),A |
||
163 | NOP |
||
164 | OUT (C),A |
||
165 | NOP |
||
166 | OUT (C),A |
||
167 | DEC A |
||
168 | OUT (C),A |
||
169 | POP BC |
||
170 | RET |
||
171 | |||
585 | savelij | 172 | SD_CMP LD A,CMD_58 |
173 | LD BC,P_DATA |
||
174 | CALL OUT_COM |
||
175 | CALL IN_OOUT |
||
176 | IN H,(C) |
||
177 | NOP |
||
178 | IN H,(C) |
||
179 | NOP |
||
180 | IN H,(C) |
||
181 | NOP |
||
182 | IN H,(C) |
||
183 | RET |
||
184 | |||
507 | savelij | 185 | SECM200 PUSH HL |
186 | PUSH DE |
||
187 | PUSH BC |
||
188 | PUSH AF |
||
189 | PUSH BC |
||
190 | LD A,CMD_58 |
||
191 | LD BC,P_DATA |
||
192 | CALL OUT_COM |
||
193 | CALL IN_OOUT |
||
194 | IN A,(C) |
||
195 | NOP |
||
196 | IN H,(C) |
||
197 | NOP |
||
198 | IN H,(C) |
||
199 | NOP |
||
200 | IN H,(C) |
||
585 | savelij | 201 | INC A |
202 | JP Z,SD_CARD_LOST |
||
203 | DEC A |
||
507 | savelij | 204 | BIT 6,A |
205 | POP HL |
||
206 | JR NZ,SECN200 |
||
207 | EX DE,HL |
||
208 | ADD HL,HL |
||
209 | EX DE,HL |
||
210 | ADC HL,HL |
||
211 | LD H,L |
||
212 | LD L,D |
||
213 | LD D,E |
||
214 | LD E,0 |
||
215 | SECN200 POP AF |
||
890 | DimkaM | 216 | in (c) ;in f,(c) |
217 | in (c) ;in f,(c) |
||
507 | savelij | 218 | LD BC,P_DATA |
219 | OUT (C),A |
||
220 | NOP |
||
221 | OUT (C),H |
||
222 | NOP |
||
223 | OUT (C),L |
||
224 | NOP |
||
225 | OUT (C),D |
||
226 | NOP |
||
227 | OUT (C),E |
||
228 | LD A,0XFF |
||
229 | OUT (C),A |
||
230 | POP BC |
||
231 | POP DE |
||
232 | POP HL |
||
233 | RET |
||
234 | |||
235 | IN_OOUT PUSH DE |
||
585 | savelij | 236 | LD DE,0X30FF |
507 | savelij | 237 | IN_WAIT IN A,(P_DATA) |
238 | CP E |
||
239 | JR NZ,IN_EXIT |
||
240 | IN_NEXT DEC D |
||
241 | JR NZ,IN_WAIT |
||
242 | IN_EXIT POP DE |
||
243 | RET |
||
244 | |||
245 | CMD00 DB 0X40,0X00,0X00,0X00,0X00,0X95 ;GO_IDLE_STATE |
||
246 | CMD08 DB 0X48,0X00,0X00,0X01,0XAA,0X87 ;SEND_IF_COND |
||
247 | CMD16 DB 0X50,0X00,0X00,0X02,0X00,0XFF ;SET_BLOCKEN |
||
248 | |||
249 | RD_SECT PUSH BC |
||
573 | savelij | 250 | LD A,IYL |
251 | BIT 1,A |
||
588 | savelij | 252 | JR NZ,RD_SECT3 ; |
573 | savelij | 253 | AND A |
254 | JR NZ,RD_SECT2 |
||
680 | savelij | 255 | RD_SECT3 |
256 | ; LD A,(R_7FFD) |
||
257 | READ_7FFD |
||
573 | savelij | 258 | LD BC,(B0_CPU2) |
259 | JR Z,RD_SECT1 |
||
260 | LD BC,(B1_CPU2) |
||
761 | savelij | 261 | RD_SECT1 PEC_ON M_SHADOW_BF |
573 | savelij | 262 | LD A,B |
588 | savelij | 263 | OR 0X37 |
573 | savelij | 264 | LD B,A |
265 | LD A,C |
||
266 | LD C,LOW (WIN_A0) |
||
267 | OUT (C),A |
||
761 | savelij | 268 | PEC_OFF M_SHADOW_BF |
573 | savelij | 269 | RD_SECT2 LD BC,P_DATA |
507 | savelij | 270 | INIR |
271 | NOP |
||
272 | INIR |
||
273 | NOP |
||
274 | IN A,(C) |
||
275 | NOP |
||
276 | IN A,(C) |
||
761 | savelij | 277 | PEC_ON M_SHADOW_BF |
643 | savelij | 278 | LD BC,WIN_P6 |
573 | savelij | 279 | XOR A |
280 | OUT (C),A |
||
761 | savelij | 281 | PEC_OFF M_SHADOW_BF |
507 | savelij | 282 | POP BC |
283 | RET |
||
284 | |||
573 | savelij | 285 | WR_SECT PUSH BC |
286 | LD BC,P_DATA |
||
287 | OUT (C),A |
||
288 | OTIR |
||
289 | NOP |
||
290 | OTIR |
||
291 | LD A,0XFF |
||
292 | OUT (C),A |
||
293 | NOP |
||
294 | OUT (C),A |
||
295 | POP BC |
||
296 | RET |
||
297 | |||
507 | savelij | 298 | RDMULTI EX AF,AF' |
299 | LD A,CMD_18 |
||
300 | CALL SECM200 |
||
301 | EX AF,AF' |
||
302 | RDMULT1 EX AF,AF' |
||
303 | CALL IN_OOUT |
||
304 | CP 0XFE |
||
305 | JR NZ,$-5 |
||
306 | CALL RD_SECT |
||
307 | EX AF,AF' |
||
308 | DEC A |
||
309 | JR NZ,RDMULT1 |
||
310 | LD A,CMD_12 |
||
311 | CALL OUT_COM |
||
312 | CALL IN_OOUT |
||
313 | INC A |
||
314 | JR NZ,$-4 |
||
315 | JP CS_HIGH |
||
316 | |||
573 | savelij | 317 | WRMULTI EX AF,AF' |
318 | LD A,CMD_25 |
||
507 | savelij | 319 | CALL SECM200 |
320 | CALL IN_OOUT |
||
573 | savelij | 321 | INC A |
322 | JR NZ,$-4 |
||
323 | EX AF,AF' |
||
324 | WRMULT1 EX AF,AF' |
||
325 | LD A,0XFC |
||
326 | CALL WR_SECT |
||
507 | savelij | 327 | CALL IN_OOUT |
328 | INC A |
||
329 | JR NZ,$-4 |
||
573 | savelij | 330 | EX AF,AF' |
331 | DEC A |
||
332 | JR NZ,WRMULT1 |
||
333 | LD C,P_DATA |
||
334 | LD A,0XFD |
||
335 | OUT (C),A |
||
336 | CALL IN_OOUT |
||
337 | INC A |
||
338 | JR NZ,$-4 |
||
507 | savelij | 339 | JP CS_HIGH |