Subversion Repositories pentevo

Rev

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