Subversion Repositories pentevo

Rev

Rev 952 | Details | Compare with Previous | Last modification | View Log | RSS feed

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