Rev 890 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
507 | savelij | 1 | |
1186 | savelij | 2 | ; LAST UPDATE: 06.02.2025 savelij |
507 | savelij | 3 | |
1186 | savelij | 4 | ; 室 ࠬ 騥: |
5 | ; HL- 㧪 |
||
6 | ; BCDE-32- ᥪ |
||
7 | ; A-⢮ (=512 ) |
||
8 | ; ⮫쪮 筮 /⥭ |
||
507 | savelij | 9 | |
1186 | savelij | 10 | ; 訡 뤠 室: |
11 | ; A=0-樠 諠 ᯥ譮 |
||
12 | ; A=1- ⢥⨫ |
||
507 | savelij | 13 | |
1186 | savelij | 14 | ; 窠 室 ࠡ SD |
507 | savelij | 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 |
||
1186 | 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 |
1186 | savelij | 52 | RET4SD1 |
53 | PEC_ON M_SHADOW_BF |
||
507 | savelij | 54 | POP AF |
55 | RET |
||
56 | |||
1186 | savelij | 57 | TABLSDZ DW SD_INIT ; 0 ࠬ ॡ, 室 'A' |
58 | ; ᬮ 2 祭 |
||
59 | DW SD_CMP ; 1 ઠ SD |
||
60 | DW RDMULTI ; 2 ⥭ ᥪ, - 'A' |
||
61 | DW WRMULTI ; 3 ᥪ, - 'A' |
||
507 | savelij | 62 | |
63 | SD_INIT CALL CS_HIGH |
||
64 | LD BC,P_DATA |
||
1186 | savelij | 65 | LD DE,0x10FF |
507 | savelij | 66 | OUT (C),E |
67 | DEC D |
||
68 | JR NZ,$-3 |
||
69 | XOR A |
||
70 | EX AF,AF' |
||
71 | ZAW001 LD HL,CMD00 |
||
72 | CALL OUTCOM |
||
73 | CALL IN_OOUT |
||
74 | EX AF,AF' |
||
75 | DEC A |
||
76 | JR Z,ZAW003 |
||
77 | EX AF,AF' |
||
78 | DEC A |
||
79 | JR NZ,ZAW001 |
||
80 | LD HL,CMD08 |
||
81 | CALL OUTCOM |
||
82 | CALL IN_OOUT |
||
83 | IN H,(C) |
||
84 | NOP |
||
85 | IN H,(C) |
||
86 | NOP |
||
87 | IN H,(C) |
||
88 | NOP |
||
89 | IN H,(C) |
||
90 | LD HL,0 |
||
91 | BIT 2,A |
||
92 | JR NZ,ZAW006 |
||
1186 | savelij | 93 | LD H,0x40 |
507 | savelij | 94 | ZAW006 LD A,CMD_55 |
95 | CALL OUT_COM |
||
96 | CALL IN_OOUT |
||
890 | DimkaM | 97 | in (c) ;in f,(c) |
98 | in (c) ;in f,(c) |
||
507 | savelij | 99 | LD A,ACMD_41 |
100 | OUT (C),A |
||
101 | NOP |
||
102 | OUT (C),H |
||
103 | NOP |
||
104 | OUT (C),L |
||
105 | NOP |
||
106 | OUT (C),L |
||
107 | NOP |
||
108 | OUT (C),L |
||
1186 | savelij | 109 | LD A,0xFF |
507 | savelij | 110 | OUT (C),A |
111 | CALL IN_OOUT |
||
112 | AND A |
||
113 | JR NZ,ZAW006 |
||
114 | ZAW004 LD A,CMD_59 |
||
115 | CALL OUT_COM |
||
116 | CALL IN_OOUT |
||
117 | AND A |
||
118 | JR NZ,ZAW004 |
||
119 | ZAW005 LD HL,CMD16 |
||
120 | CALL OUTCOM |
||
121 | CALL IN_OOUT |
||
122 | AND A |
||
123 | JR NZ,ZAW005 |
||
124 | CS_HIGH PUSH AF |
||
125 | LD A,3 |
||
126 | OUT (P_CONF),A |
||
127 | XOR A |
||
128 | OUT (P_DATA),A |
||
129 | POP AF |
||
130 | RET |
||
131 | |||
132 | ZAW003 CALL SD__OFF |
||
133 | INC A |
||
134 | RET |
||
135 | |||
136 | SD__OFF XOR A |
||
137 | OUT (P_CONF),A |
||
138 | OUT (P_DATA),A |
||
139 | RET |
||
140 | |||
141 | CS__LOW PUSH AF |
||
142 | LD A,1 |
||
143 | OUT (P_CONF),A |
||
144 | POP AF |
||
145 | RET |
||
146 | |||
147 | OUTCOM CALL CS__LOW |
||
148 | PUSH BC |
||
1186 | savelij | 149 | LD BC,0x0600+P_DATA |
507 | savelij | 150 | OTIR |
151 | POP BC |
||
152 | RET |
||
153 | |||
154 | OUT_COM PUSH BC |
||
155 | CALL CS__LOW |
||
156 | LD BC,P_DATA |
||
890 | DimkaM | 157 | in (c) ;in f,(c) |
158 | in (c) ;in f,(c) |
||
507 | savelij | 159 | OUT (C),A |
160 | XOR A |
||
161 | OUT (C),A |
||
162 | NOP |
||
163 | OUT (C),A |
||
164 | NOP |
||
165 | OUT (C),A |
||
166 | NOP |
||
167 | OUT (C),A |
||
168 | DEC A |
||
169 | OUT (C),A |
||
170 | POP BC |
||
171 | RET |
||
172 | |||
585 | savelij | 173 | SD_CMP LD A,CMD_58 |
174 | LD BC,P_DATA |
||
175 | CALL OUT_COM |
||
176 | CALL IN_OOUT |
||
177 | IN H,(C) |
||
178 | NOP |
||
179 | IN H,(C) |
||
180 | NOP |
||
181 | IN H,(C) |
||
182 | NOP |
||
183 | IN H,(C) |
||
184 | RET |
||
185 | |||
507 | savelij | 186 | SECM200 PUSH HL |
187 | PUSH DE |
||
188 | PUSH BC |
||
189 | PUSH AF |
||
190 | PUSH BC |
||
191 | LD A,CMD_58 |
||
192 | LD BC,P_DATA |
||
193 | CALL OUT_COM |
||
194 | CALL IN_OOUT |
||
195 | IN A,(C) |
||
196 | NOP |
||
197 | IN H,(C) |
||
198 | NOP |
||
199 | IN H,(C) |
||
200 | NOP |
||
201 | IN H,(C) |
||
585 | savelij | 202 | INC A |
203 | JP Z,SD_CARD_LOST |
||
204 | DEC A |
||
507 | savelij | 205 | BIT 6,A |
206 | POP HL |
||
207 | JR NZ,SECN200 |
||
208 | EX DE,HL |
||
209 | ADD HL,HL |
||
210 | EX DE,HL |
||
211 | ADC HL,HL |
||
212 | LD H,L |
||
213 | LD L,D |
||
214 | LD D,E |
||
215 | LD E,0 |
||
216 | SECN200 POP AF |
||
890 | DimkaM | 217 | in (c) ;in f,(c) |
218 | in (c) ;in f,(c) |
||
507 | savelij | 219 | LD BC,P_DATA |
220 | OUT (C),A |
||
221 | NOP |
||
222 | OUT (C),H |
||
223 | NOP |
||
224 | OUT (C),L |
||
225 | NOP |
||
226 | OUT (C),D |
||
227 | NOP |
||
228 | OUT (C),E |
||
1186 | savelij | 229 | LD A,0xFF |
507 | savelij | 230 | OUT (C),A |
231 | POP BC |
||
232 | POP DE |
||
233 | POP HL |
||
234 | RET |
||
235 | |||
236 | IN_OOUT PUSH DE |
||
1186 | savelij | 237 | LD DE,0x30FF |
507 | savelij | 238 | IN_WAIT IN A,(P_DATA) |
239 | CP E |
||
240 | JR NZ,IN_EXIT |
||
241 | IN_NEXT DEC D |
||
242 | JR NZ,IN_WAIT |
||
243 | IN_EXIT POP DE |
||
244 | RET |
||
245 | |||
1186 | savelij | 246 | CMD00 DB 0x40,0x00,0x00,0x00,0x00,0x95 ;GO_IDLE_STATE |
247 | CMD08 DB 0x48,0x00,0x00,0x01,0xAA,0x87 ;SEND_IF_COND |
||
248 | CMD16 DB 0x50,0x00,0x00,0x02,0x00,0xFF ;SET_BLOCKEN |
||
507 | savelij | 249 | |
250 | RD_SECT PUSH BC |
||
573 | savelij | 251 | LD A,IYL |
252 | BIT 1,A |
||
588 | savelij | 253 | JR NZ,RD_SECT3 ; |
573 | savelij | 254 | AND A |
255 | JR NZ,RD_SECT2 |
||
680 | savelij | 256 | RD_SECT3 |
1186 | savelij | 257 | READ_7FFD |
573 | savelij | 258 | LD BC,(B0_CPU2) |
259 | JR Z,RD_SECT1 |
||
260 | LD BC,(B1_CPU2) |
||
1186 | savelij | 261 | RD_SECT1 |
262 | PEC_ON M_SHADOW_BF |
||
573 | savelij | 263 | LD A,B |
1186 | savelij | 264 | OR 0x37 |
573 | savelij | 265 | LD B,A |
266 | LD A,C |
||
267 | LD C,LOW (WIN_A0) |
||
268 | OUT (C),A |
||
1186 | savelij | 269 | PEC_OFF M_SHADOW_BF |
573 | savelij | 270 | RD_SECT2 LD BC,P_DATA |
507 | savelij | 271 | INIR |
272 | NOP |
||
273 | INIR |
||
274 | NOP |
||
275 | IN A,(C) |
||
276 | NOP |
||
277 | IN A,(C) |
||
1186 | savelij | 278 | PEC_ON M_SHADOW_BF |
279 | LD BC,WIN_P2 |
||
573 | savelij | 280 | XOR A |
281 | OUT (C),A |
||
1186 | savelij | 282 | PEC_OFF M_SHADOW_BF |
507 | savelij | 283 | POP BC |
284 | RET |
||
285 | |||
573 | savelij | 286 | WR_SECT PUSH BC |
287 | LD BC,P_DATA |
||
288 | OUT (C),A |
||
289 | OTIR |
||
290 | NOP |
||
291 | OTIR |
||
1186 | savelij | 292 | LD A,0xFF |
573 | savelij | 293 | OUT (C),A |
294 | NOP |
||
295 | OUT (C),A |
||
296 | POP BC |
||
297 | RET |
||
298 | |||
507 | savelij | 299 | RDMULTI EX AF,AF' |
300 | LD A,CMD_18 |
||
301 | CALL SECM200 |
||
302 | EX AF,AF' |
||
303 | RDMULT1 EX AF,AF' |
||
304 | CALL IN_OOUT |
||
1186 | savelij | 305 | CP 0xFE |
507 | savelij | 306 | JR NZ,$-5 |
307 | CALL RD_SECT |
||
308 | EX AF,AF' |
||
309 | DEC A |
||
310 | JR NZ,RDMULT1 |
||
311 | LD A,CMD_12 |
||
312 | CALL OUT_COM |
||
313 | CALL IN_OOUT |
||
314 | INC A |
||
315 | JR NZ,$-4 |
||
316 | JP CS_HIGH |
||
317 | |||
573 | savelij | 318 | WRMULTI EX AF,AF' |
319 | LD A,CMD_25 |
||
507 | savelij | 320 | CALL SECM200 |
321 | CALL IN_OOUT |
||
573 | savelij | 322 | INC A |
323 | JR NZ,$-4 |
||
324 | EX AF,AF' |
||
325 | WRMULT1 EX AF,AF' |
||
1186 | savelij | 326 | LD A,0xFC |
573 | savelij | 327 | CALL WR_SECT |
507 | savelij | 328 | CALL IN_OOUT |
329 | INC A |
||
330 | JR NZ,$-4 |
||
573 | savelij | 331 | EX AF,AF' |
332 | DEC A |
||
333 | JR NZ,WRMULT1 |
||
334 | LD C,P_DATA |
||
1186 | savelij | 335 | LD A,0xFD |
573 | savelij | 336 | OUT (C),A |
337 | CALL IN_OOUT |
||
338 | INC A |
||
339 | JR NZ,$-4 |
||
507 | savelij | 340 | JP CS_HIGH |