Rev 831 | Details | Compare with Previous | Last modification | View Log | RSS feed
Rev | Author | Line No. | Line |
---|---|---|---|
507 | savelij | 1 | |
952 | savelij | 2 | ;LAST UPDATE: 23.05.2021 savelij |
507 | savelij | 3 | |
4 | MASTER EQU 0 |
||
5 | SLAVE EQU 0X80 |
||
6 | |||
831 | savelij | 7 | ;DRV_A EQU 0 ;DRIVE A |
8 | ;DRV_B EQU 1 ;DRIVE B |
||
9 | ;DRV_C EQU 2 ;DRIVE C |
||
10 | ;DRV_D EQU 3 ;DRIVE D |
||
11 | ;SDZ EQU 4 ;SD ZC |
||
12 | ;SDG EQU 5 ;SD NEOGS |
||
13 | ;HDDN EQU 6 ;HDD NEMO |
||
14 | ;HDDS EQU 7 ;HDD SMUC |
||
15 | ;HDDV EQU 8 ;HDD DIVIDE |
||
507 | savelij | 16 | |
573 | savelij | 17 | EXTERNAL EQU 0 ; |
18 | INTERNAL EQU 1 ; |
||
19 | INT4EXT EQU 3 ; |
||
20 | |||
585 | savelij | 21 | B_SDZ EQU %00000001 |
22 | B_SDG EQU %00000010 |
||
23 | B_HDD EQU %00000100 |
||
628 | savelij | 24 | B_NEW_SD EQU %01000000 |
585 | savelij | 25 | B_INST_SDG EQU %10000000 |
26 | |||
507 | savelij | 27 | ;
|
28 | TO_DRV PUSH HL |
||
29 | LD L,A |
||
30 | LD A,IYL |
||
31 | AND A |
||
32 | LD A,L |
||
33 | JR NZ,TO_DRV1 |
||
585 | savelij | 34 | CALL P5_READ_BYTE |
553 | savelij | 35 | LD A,(RREG_A) |
36 | LD DE,(RREG_E) |
||
37 | LD BC,(RREG_C) |
||
38 | LD HL,(RREG_L) |
||
507 | savelij | 39 | EX (SP),HL |
40 | TO_DRV1 LD HL,(GO_DEV) |
||
41 | EX (SP),HL |
||
42 | RET |
||
43 | |||
44 | ;
|
||
45 | COM_DEV EX AF,AF' |
||
585 | savelij | 46 | CALL P5_READ_BYTE |
507 | savelij | 47 | LD A,(NEXTBYTERST8) |
48 | PUSH IY |
||
573 | savelij | 49 | LD IYL,EXTERNAL ;
|
507 | savelij | 50 | NEXT_ICOM_DEV PUSH IX |
51 | PUSH HL |
||
52 | LD HL,EXITDEV |
||
53 | EX (SP),HL |
||
54 | PUSH HL |
||
55 | ADD A,A |
||
56 | ADD A,LOW (TABLDEV) |
||
57 | LD L,A |
||
58 | ADC A,HIGH (TABLDEV) |
||
59 | SUB L |
||
60 | LD H,A |
||
61 | LD A,(HL) |
||
62 | INC HL |
||
63 | LD H,(HL) |
||
64 | LD L,A |
||
65 | EX AF,AF' |
||
66 | EX (SP),HL |
||
67 | RET |
||
68 | |||
69 | EXITDEV POP IX |
||
70 | POP IY |
||
71 | RET |
||
72 | |||
73 | ;
|
||
74 | ICOM_DEV EX AF,AF' |
||
75 | EX (SP),HL |
||
76 | LD A,(HL) |
||
77 | INC HL |
||
78 | EX (SP),HL |
||
79 | PUSH IY |
||
573 | savelij | 80 | LD IYL,INTERNAL ;
|
507 | savelij | 81 | JR NEXT_ICOM_DEV |
82 | |||
83 | TABLDEV DW DEVFIND ;00 |
||
84 | DW SET_VOL ;01
|
||
85 | DW KOL_VOL ;02
|
||
573 | savelij | 86 | DW GET_FNDVOLUME ;03
|
585 | savelij | 87 | DW TO_DRV ;04
|
88 | DW SET_DEVICE ;05 LBA
|
||
89 | DW CONTROL_SD ;06 SD |
||
573 | savelij | 90 | DW COMHDDNEX ;07
HDD NEMO (
) |
585 | savelij | 91 | DW FREINIT_VOL ;08
|
952 | savelij | 92 | DW SET_SECTOR_NUM ;09
/ |
507 | savelij | 93 | |
94 | ;
|
||
95 | ;+0(1)-0-DRIVE A |
||
96 | ; 1-DRIVE B |
||
97 | ; 2-DRIVE C |
||
98 | ; 3-DRIVE D |
||
99 | ; 4-SD ZC |
||
100 | ; 5-SD NEOGS |
||
101 | ; 6-HDD NEMO |
||
102 | ; 7-HDD SMUC |
||
585 | savelij | 103 | ; 8-HDD DIVIDE |
507 | savelij | 104 | ;+1(1)- SD- 0 |
105 | ;
HDD/CD 0-MASTER, 1-SLAVE |
||
106 | ;+2(1)-
,
|
||
107 | ;
: |
||
108 | ;00=01-FAT12 |
||
573 | savelij | 109 | ;01=04,06,0E-FAT16 |
507 | savelij | 110 | ;02=0B,0C-FAT32 |
573 | savelij | 111 | ;+3(4)-
|
507 | savelij | 112 | ;+7(1)-
|
113 | |||
114 | ;
|
||
115 | ;HL-
|
||
116 | ;
: |
||
117 | ;A--
|
||
628 | savelij | 118 | DEVFIND LD A,(FLAGS_DRV) |
119 | AND B_NEW_SD |
||
831 | savelij | 120 | JR NZ,.L1 |
628 | savelij | 121 | LD HL,0XFE |
122 | LD IX,BUF_TABLVOL |
||
831 | savelij | 123 | ROMCALL CRC16_FAST,ROM_RST81 |
628 | savelij | 124 | LD BC,(BUF_TABLVOL+0XFE) |
125 | AND A |
||
126 | SBC HL,BC |
||
127 | JP Z,KOL_VOL |
||
831 | savelij | 128 | .L1 LD HL,FLAGS_DRV |
628 | savelij | 129 | LD A,B_NEW_SD!0XFF |
130 | AND (HL) |
||
131 | LD (HL),A |
||
132 | PUSH IY |
||
133 | XOR A |
||
134 | LD (KOLDVOL),A |
||
135 | LD HL,BUF_TABLVOL |
||
136 | LD DE,BUF_TABLVOL+1 |
||
137 | LD BC,0XEF |
||
138 | LD (HL),B |
||
139 | LDIR |
||
585 | savelij | 140 | LD IX,DEVICES |
628 | savelij | 141 | LD IYL,INTERNAL |
678 | savelij | 142 | LD A,(HDDTIMEOUT) |
831 | savelij | 143 | .L2 EI |
678 | savelij | 144 | HALT |
145 | HALT |
||
146 | DI |
||
147 | DEC A |
||
831 | savelij | 148 | JR NZ,.L2 |
678 | savelij | 149 | INC A |
150 | LD (HDDTIMEOUT),A |
||
507 | savelij | 151 | ;NEMO |
952 | savelij | 152 | |
153 | IFNDEF TESTEMUFDD |
||
154 | ; test |
||
573 | savelij | 155 | LD HL,BUF_512 ;
(512 ) |
507 | savelij | 156 | CALL COMHDDN |
585 | savelij | 157 | DB _DEV_INIT ;
|
507 | savelij | 158 | LD A,H |
159 | AND A |
||
831 | savelij | 160 | JR NZ,.L3 |
161 | LD (IX+0),_HDD_NEMO_MASTER+MASTER |
||
585 | savelij | 162 | INC IX |
952 | savelij | 163 | ; test |
164 | ENDIF |
||
165 | |||
831 | savelij | 166 | .L3 |
507 | savelij | 167 | ;SD ON NEOGS |
573 | savelij | 168 | LD H,CMOS_BYTE_01 |
831 | savelij | 169 | ROMCALL READCMOS,ROM_RST82 |
585 | savelij | 170 | LD A,L |
761 | savelij | 171 | AND M_ACCESSSDG ;
SD
NEOGS |
831 | savelij | 172 | JR Z,.L4 ;
,
|
507 | savelij | 173 | CALL INSTSDD ;C
SD NEOGS |
174 | AND A |
||
831 | savelij | 175 | JR NZ,.L4 ;
NEOGS
|
585 | savelij | 176 | LD HL,FLAGS_DRV |
177 | SET 7,(HL) ;
|
||
507 | savelij | 178 | CALL COMSDG |
585 | savelij | 179 | DB _DEV_INIT ; SD NEOGS |
507 | savelij | 180 | AND A |
831 | savelij | 181 | JR NZ,.L4 |
182 | LD (IX+0),_SD_SDG |
||
585 | savelij | 183 | INC IX |
831 | savelij | 184 | .L4 |
185 | ;USB FLASH |
||
186 | IF USB_ENABLE |
||
187 | CALL COMUSBF |
||
188 | DB _DEV_INIT |
||
189 | AND A |
||
190 | JR Z,.L8 |
||
191 | LD (IX+0),_SL_USBF |
||
192 | INC IX |
||
193 | ENDIF |
||
194 | .L8 |
||
507 | savelij | 195 | ;SD ON Z-CONTROLLER |
585 | savelij | 196 | CALL COMSDZ |
197 | DB _DEV_INIT ; SD |
||
507 | savelij | 198 | AND A |
831 | savelij | 199 | JR NZ,.L5 |
200 | LD (IX+0),_SD_SDZ |
||
585 | savelij | 201 | INC IX |
831 | savelij | 202 | .L5 LD (IX+0),0XFF ;
|
628 | savelij | 203 | CALL FIND_SD |
204 | LD HL,DEVICES |
||
585 | savelij | 205 | LD IX,BUF_TABLVOL |
586 | savelij | 206 | LD A,(HL) |
207 | INC A |
||
831 | savelij | 208 | JR Z,.L7 |
209 | .L6 CALL FINDVOL |
||
585 | savelij | 210 | INC HL |
211 | LD A,(HL) |
||
212 | INC A |
||
831 | savelij | 213 | JR NZ,.L6 |
214 | .L7 CALL SETVOLD ;
|
||
573 | savelij | 215 | POP IY |
507 | savelij | 216 | SCF |
585 | savelij | 217 | JP Z,KOLVOL1 ;
|
628 | savelij | 218 | DEC A |
219 | LD (SETDVOL),A |
||
585 | savelij | 220 | ;====
==== |
573 | savelij | 221 | INIT_VOLS LD IX,BUF_TABLVOL |
585 | savelij | 222 | LD A,(SETDVOL) |
223 | PUSH AF ;
|
||
573 | savelij | 224 | LD A,(KOLDVOL) |
225 | LD E,A |
||
226 | LD D,0 |
||
227 | IV_SETDRV2 PUSH AF |
||
228 | LD A,D |
||
229 | LD (SETDVOL),A |
||
230 | LD A,(IX+0) |
||
831 | savelij | 231 | CP _SD_SDZ |
573 | savelij | 232 | LD HL,COMSDZ |
233 | JR Z,IV_SETDRV1 |
||
831 | savelij | 234 | CP _SL_USBF |
235 | LD HL,COMUSBF |
||
236 | JR Z,IV_SETDRV1 |
||
237 | CP _SD_SDG |
||
573 | savelij | 238 | LD HL,COMSDG |
239 | JR Z,IV_SETDRV1 |
||
240 | LD HL,COMHDDN |
||
585 | savelij | 241 | IV_SETDRV1 LD (GO_DEV),HL ;
|
573 | savelij | 242 | LD A,(IX+2) |
243 | LD HL,BUF_TABLVOL |
||
244 | PUSH DE |
||
245 | CALL ICOM_FAT |
||
585 | savelij | 246 | DB _INIT_FATVARS |
736 | savelij | 247 | PUSH AF |
573 | savelij | 248 | CALL SAVE_FNDVOL |
736 | savelij | 249 | POP AF |
573 | savelij | 250 | POP DE |
736 | savelij | 251 | CALL C,DEL_VOL ;
,
|
573 | savelij | 252 | INC D |
253 | LD BC,8 |
||
254 | ADD IX,BC |
||
255 | POP AF |
||
256 | DEC A |
||
257 | JR NZ,IV_SETDRV2 |
||
585 | savelij | 258 | ;====
==== |
259 | POP AF |
||
260 | CALL SET_VOL1 ;
|
||
261 | LD A,(KOLDVOL) |
||
262 | DEC A |
||
263 | CALL C,SET_VOL1 ;
,
|
||
573 | savelij | 264 | CALL ICOM_FAT |
585 | savelij | 265 | DB _INIT_TEKDIR |
573 | savelij | 266 | LD HL,0XFE |
267 | LD IX,BUF_TABLVOL |
||
831 | savelij | 268 | ROMCALL CRC16_FAST,ROM_RST81 |
585 | savelij | 269 | LD (CRC_DRVS),HL |
573 | savelij | 270 | KOL_VOL LD A,IYL |
507 | savelij | 271 | AND A |
573 | savelij | 272 | JR NZ,IKOL_VOL |
273 | LD HL,(ADRTEKV) ;
|
||
507 | savelij | 274 | INC HL |
275 | INC HL |
||
276 | LD A,(HL) ;
|
||
277 | LD HL,(KOLDVOL) ;D-
, E-
|
||
553 | savelij | 278 | LD (RREG_E),HL |
507 | savelij | 279 | AND A |
573 | savelij | 280 | KOLVOL1 PUSH AF |
507 | savelij | 281 | POP HL |
553 | savelij | 282 | LD (RREG_F),HL |
507 | savelij | 283 | RET |
284 | |||
736 | savelij | 285 | ;
|
286 | DEL_VOL PUSH DE |
||
287 | PUSH IX |
||
288 | POP HL |
||
289 | EX DE,HL |
||
290 | LD HL,8 |
||
291 | ADD HL,DE |
||
292 | LD C,L |
||
293 | LD A,26*8 |
||
294 | SUB C |
||
295 | LD C,A |
||
296 | LD B,0 |
||
297 | LDIR |
||
298 | LD BC,-8 |
||
299 | ADD IX,BC |
||
300 | LD HL,KOLDVOL |
||
301 | DEC (HL) |
||
302 | POP DE |
||
303 | DEC D |
||
304 | RET |
||
305 | |||
585 | savelij | 306 | FINDVOL PUSH HL |
307 | LD A,(HL) |
||
308 | LD (TEK_TYPE),A |
||
309 | AND 0X7F |
||
831 | savelij | 310 | CP _HDD_NEMO_MASTER |
585 | savelij | 311 | LD HL,COMHDDN |
312 | JR Z,FINDVOL1 |
||
831 | savelij | 313 | CP _SD_SDG |
585 | savelij | 314 | LD HL,COMSDG |
315 | JR Z,FINDVOL1 |
||
316 | LD HL,COMSDZ |
||
317 | FINDVOL1 LD (GO_DEV),HL ;
|
||
318 | LD DE,0 |
||
319 | LD B,D |
||
320 | LD C,D ;
0 |
||
321 | LD A,1 ;1
|
||
322 | LD HL,BUF_512 ;
|
||
323 | PUSH HL |
||
324 | LD IYL,INTERNAL |
||
325 | CALL TO_DRV |
||
326 | DB _DEV_READ |
||
327 | DEC HL |
||
328 | LD D,(HL) |
||
329 | DEC HL |
||
330 | LD E,(HL) |
||
331 | LD HL,0XAA55 |
||
332 | AND A |
||
333 | SBC HL,DE |
||
334 | POP IY |
||
335 | LD (ADRTEKV),IX |
||
336 | CALL Z,READ_MBR |
||
337 | POP HL |
||
338 | RET |
||
339 | |||
573 | savelij | 340 | ;
|
341 | IKOL_VOL LD HL,(ADRTEKV) ;
|
||
342 | INC HL |
||
343 | INC HL |
||
344 | LD A,(HL) ;
|
||
345 | LD DE,(KOLDVOL) ;D-
, E-
|
||
346 | LD HL,BUF_TABLVOL ;
|
||
347 | AND A |
||
507 | savelij | 348 | RET |
349 | |||
350 | ;
|
||
351 | SETVOLD LD A,IXL |
||
352 | RRCA |
||
353 | RRCA |
||
354 | RRCA |
||
355 | AND 0X1F |
||
356 | LD (KOLDVOL),A |
||
573 | savelij | 357 | RET |
358 | |||
628 | savelij | 359 | ;
|
573 | savelij | 360 | FREINIT_VOL LD L,A |
361 | LD A,IYL |
||
507 | savelij | 362 | AND A |
573 | savelij | 363 | JR Z,FREINITVOL1 |
364 | LD A,(RREG_A) |
||
365 | FREINITVOL1 LD IYL,INTERNAL |
||
366 | CALL SET_VOL1 |
||
367 | CALL INIT_FATVARS |
||
368 | JP INIRTSC |
||
369 | |||
370 | ;
|
||
371 | SET_VOL LD L,A |
||
372 | LD A,IYL |
||
373 | AND A |
||
374 | LD A,L |
||
375 | JR NZ,SET_VOL1 |
||
376 | LD A,(RREG_A) |
||
377 | LD HL,KOLVOL1 |
||
378 | PUSH HL |
||
379 | SET_VOL1 PUSH AF |
||
380 | CALL SAVE_FNDVOL |
||
381 | POP AF |
||
382 | SET_VOL_MNT LD HL,KOLDVOL |
||
383 | CP (HL) |
||
384 | CCF |
||
385 | RET C |
||
386 | LD (SETDVOL),A |
||
387 | LD L,A |
||
388 | LD H,0 |
||
389 | ADD HL,HL |
||
390 | ADD HL,HL |
||
391 | ADD HL,HL |
||
392 | LD DE,BUF_TABLVOL |
||
393 | ADD HL,DE |
||
394 | LD (ADRTEKV),HL |
||
395 | LD A,(HL) |
||
585 | savelij | 396 | ; CP 4 |
573 | savelij | 397 | ; LD HL,DISKETA ;
|
585 | savelij | 398 | ; JR C,SET_DRV |
831 | savelij | 399 | CP _SL_USBF |
400 | LD HL,COMUSBF |
||
401 | JR Z,SET_DRV |
||
402 | CP _SD_SDZ |
||
573 | savelij | 403 | LD HL,COMSDZ |
404 | JR Z,SET_DRV |
||
831 | savelij | 405 | CP _SD_SDG |
573 | savelij | 406 | LD HL,COMSDG |
407 | JR Z,SET_DRV |
||
408 | LD HL,COMHDDN |
||
409 | SET_DRV LD (GO_DEV),HL |
||
410 | CALL LOAD_FNDVOL |
||
411 | LD HL,0XFE |
||
412 | PUSH IX |
||
413 | LD IX,BUF_TABLVOL |
||
831 | savelij | 414 | ROMCALL CRC16_FAST,ROM_RST81 |
573 | savelij | 415 | POP IX |
585 | savelij | 416 | LD (CRC_DRVS),HL |
573 | savelij | 417 | XOR A |
507 | savelij | 418 | RET |
419 | |||
585 | savelij | 420 | SAVE_FNDVOL PUSH IX |
421 | LD HL,0XFE |
||
422 | LD IX,ERORDRV |
||
831 | savelij | 423 | ROMCALL CRC16_FAST,ROM_RST81 |
585 | savelij | 424 | POP IX |
425 | LD (CRC_VOL),HL ;
CRC
|
||
736 | savelij | 426 | EVOPORT WIN_P5,RAM_FATVARS |
573 | savelij | 427 | LD A,(SETDVOL) |
643 | savelij | 428 | ADD A,HIGH (CPU5+BUF_ALLVOL)+4 |
573 | savelij | 429 | LD D,A |
430 | LD E,0 |
||
431 | LD HL,BUF_TEKVOL |
||
432 | LD BC,0X100 |
||
433 | LDIR |
||
434 | RET |
||
435 | |||
736 | savelij | 436 | LOAD_FNDVOL EVOPORT WIN_P5,RAM_FATVARS |
573 | savelij | 437 | LD A,(SETDVOL) |
643 | savelij | 438 | ADD A,HIGH (CPU5+BUF_ALLVOL)+4 |
573 | savelij | 439 | LD H,A |
440 | LD L,0 |
||
441 | LD DE,BUF_TEKVOL |
||
442 | LD BC,0X100 |
||
443 | LDIR |
||
628 | savelij | 444 | ; PUSH IX |
445 | ; LD HL,0XFE |
||
446 | ; LD IX,ERORDRV |
||
831 | savelij | 447 | ; ROMCALL CRC16_FAST,P_ADDON1 |
628 | savelij | 448 | ; POP IX |
449 | ; LD DE,(CRC_VOL) |
||
450 | ; AND A |
||
451 | ; SBC HL,DE |
||
452 | ; JP NZ,REDEVFIND |
||
573 | savelij | 453 | CALL ICOM_FAT |
585 | savelij | 454 | DB _INIT_TEKDIR |
573 | savelij | 455 | RET |
456 | |||
585 | savelij | 457 | CMP_SDCARD LD A,(SETDVOL) |
831 | savelij | 458 | CP _SD_SDG |
585 | savelij | 459 | JR NZ,CMPSDCARD1 |
460 | LD H,CMOS_BYTE_01 |
||
831 | savelij | 461 | ROMCALL READCMOS,ROM_RST82 |
585 | savelij | 462 | LD A,L |
761 | savelij | 463 | AND M_ACCESSSDG ;
SD
NEOGS |
585 | savelij | 464 | RET Z |
465 | CMPSDCARD1 PUSH IY |
||
466 | LD IYL,INTERNAL |
||
467 | CALL TO_DRV |
||
468 | DB _DEV_STATUS |
||
469 | POP IY |
||
470 | INC A |
||
471 | RET |
||
507 | savelij | 472 | |
585 | savelij | 473 | READ_MBR LD DE,0X01BE ;
0
MBR |
507 | savelij | 474 | PUSH IY |
573 | savelij | 475 | ADD IY,DE ;
|
476 | LD BC,0X0400 ;
4
FAT |
||
585 | savelij | 477 | RDMBR0 LD A,(IY) ;
16
|
573 | savelij | 478 | AND A ;
0 |
585 | savelij | 479 | JR Z,RDMBR1 |
573 | savelij | 480 | CP 0X80 ; 0X80 (
) |
585 | savelij | 481 | JR NZ,RDMBR2 |
761 | savelij | 482 | RDMBR1 LD A,(IY+4) ;
|
573 | savelij | 483 | CALL CP_RAZD ;
|
585 | savelij | 484 | JR NZ,RDMBR2 ;
FAT
16 |
507 | savelij | 485 | INC C |
585 | savelij | 486 | RDMBR2 LD DE,0X10 |
507 | savelij | 487 | ADD IY,DE |
585 | savelij | 488 | DJNZ RDMBR0 ;
16 MBR |
507 | savelij | 489 | LD A,C |
490 | AND A |
||
491 | POP HL |
||
492 | JP NZ,SCANMBR |
||
493 | PUSH HL |
||
494 | POP IY |
||
495 | LD C,(IY+0X0D) |
||
496 | XOR A |
||
497 | LD E,A |
||
498 | LD B,8 |
||
499 | RR C |
||
500 | ADC A,0 |
||
501 | DJNZ $-4 |
||
502 | DEC A |
||
503 | JR NZ,$+3 |
||
504 | INC E |
||
505 | LD A,(IY+0X0E) |
||
506 | OR (IY+0X0F) |
||
507 | JR Z,$+3 |
||
508 | INC E |
||
678 | savelij | 509 | ; LD A,(IY+0X13) |
510 | ; OR (IY+0X14) |
||
511 | ; JR Z,$+3 |
||
512 | ; INC E |
||
513 | ; LD A,(IY+0X20) |
||
514 | ; OR (IY+0X21) |
||
515 | ; OR (IY+0X22) |
||
516 | ; OR (IY+0X22) |
||
517 | ; JR Z,$+3 |
||
518 | ; INC E |
||
507 | savelij | 519 | LD A,(IY+0X15) |
520 | AND 0XF0 |
||
521 | CP 0XF0 |
||
522 | JR NZ,$+3 |
||
523 | INC E |
||
524 | LD A,E |
||
678 | savelij | 525 | CP 3;4 |
507 | savelij | 526 | RET NZ |
585 | savelij | 527 | LD A,(TEK_TYPE) |
507 | savelij | 528 | BIT 7,A |
529 | LD B,0 |
||
530 | JR Z,$+3 |
||
531 | INC B |
||
532 | AND 0X7F |
||
533 | LD C,A |
||
534 | PUSH IX |
||
535 | POP HL |
||
536 | XOR A |
||
537 | LD (HL),C |
||
538 | INC HL |
||
539 | LD (HL),B |
||
540 | INC HL |
||
541 | LD (HL),0XFF |
||
542 | INC HL |
||
543 | LD (HL),A |
||
544 | INC HL |
||
545 | LD (HL),A |
||
546 | INC HL |
||
547 | LD (HL),A |
||
548 | INC HL |
||
549 | LD (HL),A |
||
550 | INC HL |
||
551 | LD (HL),A |
||
552 | LD DE,8 |
||
553 | ADD IX,DE |
||
573 | savelij | 554 | INIT_VOL PUSH IY |
555 | LD IYL,INTERNAL |
||
507 | savelij | 556 | CALL SETVOLD |
557 | DEC A |
||
573 | savelij | 558 | LD (SETDVOL),A |
559 | LD L,A |
||
560 | LD H,0 |
||
561 | ADD HL,HL |
||
562 | ADD HL,HL |
||
563 | ADD HL,HL |
||
564 | LD DE,BUF_TABLVOL |
||
565 | ADD HL,DE |
||
566 | LD (ADRTEKV),HL |
||
567 | LD A,(HL) |
||
585 | savelij | 568 | AND 0X7F |
569 | ; CP 4 |
||
573 | savelij | 570 | ; LD HL,DISKETA ;
|
831 | savelij | 571 | ; JR C,DSET_DRV |
572 | CP _SL_USBF |
||
573 | LD HL,COMUSBF |
||
574 | JR Z,DSET_DRV |
||
575 | CP _SD_SDZ |
||
573 | savelij | 576 | LD HL,COMSDZ |
577 | JR Z,DSET_DRV |
||
831 | savelij | 578 | CP _SD_SDG |
573 | savelij | 579 | LD HL,COMSDG |
580 | JR Z,DSET_DRV |
||
581 | LD HL,COMHDDN |
||
582 | DSET_DRV LD (GO_DEV),HL |
||
583 | CALL IKOL_VOL |
||
584 | CALL ICOM_FAT |
||
585 | savelij | 585 | DB _INIT_FATVARS |
573 | savelij | 586 | LD (IX-6),A |
587 | POP IY |
||
588 | RET |
||
507 | savelij | 589 | |
590 | ;
: |
||
591 | ;A-BIT 7-0/1-MASTER/SLAVE |
||
592 | ;BITS 6-0-
|
||
585 | savelij | 593 | SCANMBR LD DE,0X01BE |
507 | savelij | 594 | ADD HL,DE |
595 | EXX |
||
585 | savelij | 596 | LD A,(TEK_TYPE) |
507 | savelij | 597 | BIT 7,A |
598 | LD B,0 |
||
599 | JR Z,$+3 |
||
600 | INC B |
||
601 | AND 0X7F |
||
602 | LD C,A |
||
603 | EXX |
||
604 | LD A,4 |
||
573 | savelij | 605 | SCNMBR0 PUSH AF |
507 | savelij | 606 | LD A,(HL) |
607 | LD C,4 |
||
608 | ADD HL,BC |
||
609 | LD C,0X0C |
||
610 | AND A |
||
611 | JR Z,SCNMBR1 |
||
612 | CP 0X80 |
||
613 | JR NZ,SCNMBR2 |
||
614 | SCNMBR1 LD A,(HL) |
||
615 | AND A |
||
616 | JR Z,SCNMBR2 |
||
617 | CALL CP_RAZD |
||
618 | JR NZ,SCNMBR2 |
||
619 | SCNMBR3 EXX |
||
585 | savelij | 620 | LD (IX+0),C |
507 | savelij | 621 | LD (IX+1),B |
622 | EXX |
||
585 | savelij | 623 | LD (IX+2),E ; FAT |
507 | savelij | 624 | PUSH IX |
625 | POP DE |
||
626 | INC DE |
||
627 | INC DE |
||
628 | INC DE |
||
585 | savelij | 629 | LD C,4 |
507 | savelij | 630 | ADD HL,BC |
631 | LDI |
||
632 | LDI |
||
633 | LDI |
||
634 | LDI |
||
585 | savelij | 635 | LD (IX+7),0 ;
|
507 | savelij | 636 | SCNMBR4 LD C,8 |
637 | ADD IX,BC |
||
638 | LD C,4 |
||
639 | SCNMBR2 ADD HL,BC |
||
573 | savelij | 640 | POP AF |
507 | savelij | 641 | DEC A |
642 | JR NZ,SCNMBR0 |
||
643 | RET |
||
644 | |||
645 | SET_DEVICE PUSH AF |
||
646 | PUSH HL |
||
647 | LD A,B |
||
648 | AND 0X0F |
||
649 | LD B,A |
||
650 | LD HL,(ADRTEKV) |
||
651 | INC HL |
||
652 | LD A,(HL) |
||
653 | AND 1 ;MASTER SLAVE? |
||
654 | RLCA |
||
655 | RLCA |
||
656 | RLCA |
||
657 | RLCA |
||
658 | OR 0XE0 ;
LBA
|
||
659 | OR B |
||
660 | LD B,A ;
MASTER SLAVE |
||
661 | POP HL |
||
662 | POP AF |
||
663 | RET |
||
664 | |||
665 | ;
|
||
573 | savelij | 666 | CP_RAZD LD E,1 ;FAT16 |
507 | savelij | 667 | CP 4 |
668 | RET Z |
||
669 | CP 6 |
||
670 | RET Z |
||
671 | CP 0X0E |
||
672 | RET Z |
||
573 | savelij | 673 | LD E,2 ;FAT32 |
507 | savelij | 674 | CP 0X0B |
675 | RET Z |
||
676 | CP 0X0C |
||
677 | RET Z |
||
573 | savelij | 678 | LD E,0 ;FAT12 |
507 | savelij | 679 | CP 1 |
680 | RET |
||
681 | |||
682 | ;
HDD NEMO |
||
585 | savelij | 683 | COMHDDNEX CALL P5_READ_BYTE |
782 | savelij | 684 | LD A,(RREG_AA) |
685 | EX AF,AF' |
||
553 | savelij | 686 | LD A,(RREG_A) |
687 | LD DE,(RREG_E) |
||
688 | LD BC,(RREG_C) |
||
689 | LD HL,(RREG_L) |
||
782 | savelij | 690 | CALL COMHDDN |
691 | LD (RREG_A),A |
||
692 | LD (RREG_L),HL |
||
693 | LD (RREG_E),DE |
||
694 | LD (RREG_C),BC |
||
695 | RET |
||
573 | savelij | 696 | |
697 | ;
|
||
698 | GET_FNDVOLUME LD BC,0X100 ; 256 |
||
699 | LD DE,(RREG_L) ; |
||
643 | savelij | 700 | LD HL,BUF_TABLVOL-CPU6 |
573 | savelij | 701 | JP LDIR_BYTES |
585 | savelij | 702 | |
703 | CONTROL_SD LD A,(FLAGS_DRV) |
||
704 | PUSH AF |
||
705 | CALL FIND_SD |
||
706 | LD C,A |
||
707 | AND 3 |
||
708 | LD (RREG_A),A |
||
709 | LD A,C |
||
710 | POP BC |
||
711 | CP B |
||
628 | savelij | 712 | JP NZ,SD_CARD_LOST |
713 | RET |
||
585 | savelij | 714 | |
715 | FIND_SD PUSH IY |
||
716 | LD IYL,INTERNAL |
||
623 | savelij | 717 | LD E,0 |
585 | savelij | 718 | LD A,(FLAGS_DRV) |
628 | savelij | 719 | AND B_INST_SDG |
585 | savelij | 720 | JR Z,CRTLSD1 ; |
721 | PUSH HL |
||
623 | savelij | 722 | PUSH DE |
585 | savelij | 723 | CALL COMSDG |
724 | DB _DEV_STATUS |
||
623 | savelij | 725 | POP DE |
585 | savelij | 726 | POP HL |
727 | AND A |
||
623 | savelij | 728 | SET 1,E ; SD NEOGS |
585 | savelij | 729 | JR Z,CRTLSD1 |
623 | savelij | 730 | RES 1,E ; |
585 | savelij | 731 | EX DE,HL |
732 | LD HL,FLAGS_DRV |
||
733 | RES 7,(HL) |
||
734 | EX DE,HL |
||
735 | CRTLSD1 PUSH HL |
||
736 | CALL COMSDZ |
||
737 | DB _DEV_STATUS |
||
738 | POP HL |
||
739 | AND A |
||
623 | savelij | 740 | SET 0,E ; SD ZC |
585 | savelij | 741 | JR Z,CRTLSD2 |
623 | savelij | 742 | RES 0,E ; |
585 | savelij | 743 | CRTLSD2 POP IY |
744 | LD HL,FLAGS_DRV |
||
745 | LD A,0XFC |
||
746 | AND (HL) |
||
747 | OR E |
||
748 | LD (HL),A |
||
749 | RET |
||
952 | savelij | 750 | |
751 | ; HLBCDE -
|
||
752 | SET_SECTOR_NUM |
||
753 | LD HL,(RREG_L) |
||
754 | LD (NUMSEC_LBA48+4),HL |
||
755 | LD HL,(RREG_C) |
||
756 | LD (NUMSEC_LBA48+2),HL |
||
757 | LD HL,(RREG_E) |
||
758 | LD (NUMSEC_LBA48),HL |
||
759 | RET |