Top secrets sources NedoPC pentevo

Rev

Rev 782 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?


;LAST UPDATE: 30.06.2019 savelij

MASTER          EQU 0
SLAVE           EQU 0X80

;DRV_A          EQU 0                   ;DRIVE A
;DRV_B          EQU 1                   ;DRIVE B
;DRV_C          EQU 2                   ;DRIVE C
;DRV_D          EQU 3                   ;DRIVE D
;SDZ            EQU 4                   ;SD Š€’€ € ZC
;SDG            EQU 5                   ;SD Š€’€ € NEOGS
;HDDN           EQU 6                   ;HDD NEMO
;HDDS           EQU 7                   ;HDD SMUC
;HDDV           EQU 8                   ;HDD DIVIDE

EXTERNAL        EQU 0                   ;‚…˜ˆ‰ ‚›‡Ž‚
INTERNAL        EQU 1                   ;‚“’…ˆ‰ ‚›‡Ž‚
INT4EXT         EQU 3                   ;‚“’…ˆ‰ ‚›‡Ž‚ „‹Ÿ ‚›‡‚€‚˜…‰ Žƒˆ

B_SDZ           EQU %00000001
B_SDG           EQU %00000010
B_HDD           EQU %00000100
B_NEW_SD        EQU %01000000
B_INST_SDG      EQU %10000000

;‚›‡Ž‚ ‚›€ŽƒŽ „€‰‚…€
TO_DRV          PUSH HL
                LD L,A
                LD A,IYL
                AND A
                LD A,L
                JR NZ,TO_DRV1
                CALL P5_READ_BYTE
                LD A,(RREG_A)
                LD DE,(RREG_E)
                LD BC,(RREG_C)
                LD HL,(RREG_L)
                EX (SP),HL
TO_DRV1         LD HL,(GO_DEV)
                EX (SP),HL
                RET

;‚…˜ˆ‰ ‚›‡Ž‚ Œ……„†…€ “‘’Ž‰‘’‚
COM_DEV         EX AF,AF'
                CALL P5_READ_BYTE
                LD A,(NEXTBYTERST8)
                PUSH IY
                LD IYL,EXTERNAL                 ;‚…˜ˆ‰ ‚›‡Ž‚
NEXT_ICOM_DEV   PUSH IX
                PUSH HL
                LD HL,EXITDEV
                EX (SP),HL
                PUSH HL
                ADD A,A
                ADD A,LOW (TABLDEV)
                LD L,A
                ADC A,HIGH (TABLDEV)
                SUB L
                LD H,A
                LD A,(HL)
                INC HL
                LD H,(HL)
                LD L,A
                EX AF,AF'

                EX (SP),HL
                RET

EXITDEV         POP IX
                POP IY
                RET

;‚“’…ˆ‰ ‚›‡Ž‚ Œ……„†…€ “‘’Ž‰‘’‚
ICOM_DEV        EX AF,AF'
                EX (SP),HL
                LD A,(HL)
                INC HL
                EX (SP),HL
                PUSH IY
                LD IYL,INTERNAL                 ;‚“’…ˆ‰ ‚›‡Ž‚
                JR NEXT_ICOM_DEV

TABLDEV         DW DEVFIND                      ;00 Žˆ‘Š “‘’Ž‰‘’‚
                DW SET_VOL                      ;01 ‚›Ž €‡„…‹€
                DW KOL_VOL                      ;02 ‡€Ž‘ €‰„…ŽƒŽ
                DW GET_FNDVOLUME                ;03 Ž‹“—ˆ’œ ’€‹ˆ–“ €‰„…›• €‡„…‹Ž‚
                DW TO_DRV                       ;04 ‚›‡Ž‚ „€‰‚…€ ‚›€ŽƒŽ “‘’Ž‰‘’‚€
                DW SET_DEVICE                   ;05 “‘’€Ž‚Š€ ˆ’Ž‚ “‘’Ž‰‘’‚€ ˆ LBA …†ˆŒ€
                DW CONTROL_SD                   ;06 ŠŽ’Ž‹œ €‹ˆ—ˆŸ SD Š€’
                DW COMHDDNEX                    ;07 ŸŒŽ‰ ‚›‡Ž‚ „€‰‚…€ HDD NEMO (‚…Œ…€Ÿ ”“Š–ˆŸ)
                DW FREINIT_VOL                  ;08 Ž‹€Ÿ ……ˆˆ–ˆ€‹ˆ‡€–ˆŸ €‡„…‹€

;”ŽŒ€’ ’€‹ˆ–› €‰„…›• €‡„…‹Ž‚
;+0(1)-0-DRIVE A
;      1-DRIVE B
;      2-DRIVE C
;      3-DRIVE D
;      4-SD Š€’€ ZC
;      5-SD Š€’€ NEOGS
;      6-HDD NEMO
;      7-HDD SMUC
;      8-HDD DIVIDE
;+1(1)-„‹Ÿ SD-’“Ž 0
;      ˆ€—… HDD/CD 0-MASTER, 1-SLAVE
;+2(1)-’ˆ €‡„…‹€, ‚ ’€‹ˆ–… ’Ž‹œŠŽ
;€‡„…‹›:
;00=01-FAT12
;01=04,06,0E-FAT16
;02=0B,0C-FAT32
;+3(4)-‘’€’Ž‚›‰ ‘…Š’Ž €‡„…‹€
;+7(1)-…‡…‚

;’Ž—Š€ ‚•Ž„€ „‹Ÿ Žˆ‘Š€ €‡„…‹Ž‚
;HL-€„…‘ Š“„€ ŽŠ‹€‘’œ ’€‹ˆ–“ €‡„…‹Ž‚
;€ ‚›•Ž„…:
;A-ŠŽ‹-‚Ž €‡„…‹Ž‚
DEVFIND         LD A,(FLAGS_DRV)
                AND B_NEW_SD
                JR NZ,.L1
                LD HL,0XFE
                LD IX,BUF_TABLVOL
                ROMCALL CRC16_FAST,ROM_RST81
                LD BC,(BUF_TABLVOL+0XFE)
                AND A
                SBC HL,BC
                JP Z,KOL_VOL
.L1             LD HL,FLAGS_DRV
                LD A,B_NEW_SD!0XFF
                AND (HL)
                LD (HL),A
                PUSH IY
                XOR A
                LD (KOLDVOL),A
                LD HL,BUF_TABLVOL
                LD DE,BUF_TABLVOL+1
                LD BC,0XEF
                LD (HL),B
                LDIR
                LD IX,DEVICES
                LD IYL,INTERNAL
                LD A,(HDDTIMEOUT)
.L2             EI
                HALT
                HALT
                DI
                DEC A
                JR NZ,.L2
                INC A
                LD (HDDTIMEOUT),A
;NEMO
                LD HL,BUF_512                   ;€„…‘ “”…€ „‹Ÿ ‡€ƒ“‡Šˆ ‘…Š’Ž€ (512 €‰’)
                CALL COMHDDN
                DB _DEV_INIT                    ;ˆˆ–ˆ€‹ˆ‡€–ˆŸ “‘’Ž‰‘’‚€ ‘ Ž…„…‹…ˆ…Œ —’Ž Ž„Š‹ž—…Ž
                LD A,H
                AND A
                JR NZ,.L3
                LD (IX+0),_HDD_NEMO_MASTER+MASTER
                INC IX
.L3    
;SD ON NEOGS
                LD H,CMOS_BYTE_01
                ROMCALL READCMOS,ROM_RST82
                LD A,L
                AND M_ACCESSSDG                 ;Ž‚…Š€ €‡…˜…ˆŸ „Ž‘’“€ Š SD Š€’… NEOGS
                JR Z,.L4                        ;…‘‹ˆ ‡€…™…, ’Ž … ‚›‡›‚€…Œ
                CALL INSTSDD                    ;“C’€Ž‚Š€ „€‰‚…€ SD Š€’› € NEOGS
                AND A
                JR NZ,.L4                       ;… ˆˆ–ˆ€‹ˆ‡ˆŽ‚€’œ …‘‹ˆ NEOGS … €‰„…
                LD HL,FLAGS_DRV
                SET 7,(HL)                      ;„€‰‚… “‘’€Ž‚ˆ‹‘Ÿ
                CALL COMSDG
                DB _DEV_INIT                    ;ˆˆ–ˆ€‹ˆ‡€–ˆŸ SD Š€’› € NEOGS
                AND A
                JR NZ,.L4
                LD (IX+0),_SD_SDG
                INC IX
.L4
;USB FLASH
        IF USB_ENABLE
                CALL COMUSBF
                DB _DEV_INIT
                AND A
                JR Z,.L8
                LD (IX+0),_SL_USBF
                INC IX
        ENDIF
.L8
;SD ON Z-CONTROLLER
                CALL COMSDZ
                DB _DEV_INIT                    ;ˆˆ–ˆ€‹ˆ‡€–ˆŸ SD Š€’›
                AND A
                JR NZ,.L5
                LD (IX+0),_SD_SDZ
                INC IX
.L5             LD (IX+0),0XFF                  ;„€‹…… …’ €‰„…›• “‘’Ž‰‘’‚
                CALL FIND_SD
                LD HL,DEVICES
                LD IX,BUF_TABLVOL
                LD A,(HL)
                INC A
                JR Z,.L7
.L6             CALL FINDVOL
                INC HL
                LD A,(HL)
                INC A
                JR NZ,.L6
.L7             CALL SETVOLD                    ;‚›—ˆ‘‹…ˆ… ŠŽ‹ˆ—…‘’‚€ €‰„…›• €‡„…‹Ž‚ € ‚‘…• “‘’Ž‰‘’‚€•
                POP IY
                SCF
                JP Z,KOLVOL1                    ;……•Ž„ …‘‹ˆ ˆ—…ƒŽ … €‰„…Ž
                DEC A
                LD (SETDVOL),A
;====ˆˆ–ˆ€‹ˆ‡€–ˆŸ ……Œ…›• ‚‘…• €‰„…›• €‡„…‹Ž‚====
INIT_VOLS       LD IX,BUF_TABLVOL
                LD A,(SETDVOL)
                PUSH AF                         ;‘Ž•€ˆ‹ˆ ’…Š“™ˆ‰ ‚›€›‰ €‡„…‹
                LD A,(KOLDVOL)
                LD E,A
                LD D,0
IV_SETDRV2      PUSH AF
                LD A,D
                LD (SETDVOL),A
                LD A,(IX+0)
                CP _SD_SDZ
                LD HL,COMSDZ
                JR Z,IV_SETDRV1
                CP _SL_USBF
                LD HL,COMUSBF
                JR Z,IV_SETDRV1
                CP _SD_SDG
                LD HL,COMSDG
                JR Z,IV_SETDRV1
                LD HL,COMHDDN
IV_SETDRV1      LD (GO_DEV),HL                  ;“‘’€Ž‚ˆ‹ˆ €„…‘ ’…Š“™…ƒŽ ‚›‡›‚€…ŒŽƒŽ „€‰‚…€
                LD A,(IX+2)
                LD HL,BUF_TABLVOL
                PUSH DE
                CALL ICOM_FAT
                DB _INIT_FATVARS
                PUSH AF
                CALL SAVE_FNDVOL
                POP AF
                POP DE
                CALL C,DEL_VOL                  ;€‡„…‹ …ˆ‡‚…‘’… ˆ‹ˆ … Ž’”ŽŒ€’ˆŽ‚€, “„€‹Ÿ…Œ Žˆ‘€’…‹œ
                INC D
                LD BC,8
                ADD IX,BC
                POP AF
                DEC A
                JR NZ,IV_SETDRV2
;====ˆˆ–ˆ€‹ˆ‡€–ˆŸ ……Œ…›• ‚‘…• €‰„…›• €‡„…‹Ž‚====
                POP AF
                CALL SET_VOL1                   ;‚Ž‘‘’€Ž‚‹…ˆ… ’…Š“™…ƒŽ ‚›€ŽƒŽ €‡„…‹€
                LD A,(KOLDVOL)
                DEC A
                CALL C,SET_VOL1                 ;…‘‹ˆ ‚›€ … ‘“™…‘’‚“ž™ˆ‰ €‡„…‹, ’Ž ˆ“„ˆ’…‹œŽ ‚›ˆ€…Œ Ž‘‹…„ˆ‰ €‰„…›‰
                CALL ICOM_FAT
                DB _INIT_TEKDIR
                LD HL,0XFE
                LD IX,BUF_TABLVOL
                ROMCALL CRC16_FAST,ROM_RST81
                LD (CRC_DRVS),HL
KOL_VOL         LD A,IYL
                AND A
                JR NZ,IKOL_VOL
                LD HL,(ADRTEKV)                 ;€„…‘ ’…Š“™…ƒŽ ‚›€ŽƒŽ €‡„…‹€
                INC HL
                INC HL
                LD A,(HL)                       ;’ˆ €‡„…‹€
                LD HL,(KOLDVOL)                 ;D-ŽŒ… ‚›€ŽƒŽ €‡„…‹€, E-ŠŽ‹ˆ—…‘’‚Ž €‰„…›• €‡„…‹Ž‚
                LD (RREG_E),HL
                AND A
KOLVOL1         PUSH AF
                POP HL
                LD (RREG_F),HL
                RET

;“„€‹…ˆ… €‡„…‹€ ˆ‡ ’€‹ˆ–›
DEL_VOL         PUSH DE
                PUSH IX
                POP HL
                EX DE,HL
                LD HL,8
                ADD HL,DE
                LD C,L
                LD A,26*8
                SUB C
                LD C,A
                LD B,0
                LDIR
                LD BC,-8
                ADD IX,BC
                LD HL,KOLDVOL
                DEC (HL)
                POP DE
                DEC D
                RET

FINDVOL         PUSH HL
                LD A,(HL)
                LD (TEK_TYPE),A
                AND 0X7F
                CP _HDD_NEMO_MASTER
                LD HL,COMHDDN
                JR Z,FINDVOL1
                CP _SD_SDG
                LD HL,COMSDG
                JR Z,FINDVOL1
                LD HL,COMSDZ
FINDVOL1        LD (GO_DEV),HL                  ;‚›‘’€‚ˆ‹ˆ €„…‘ ‚›‡Ž‚€ “†ŽƒŽ „€‰‚…€
                LD DE,0
                LD B,D
                LD C,D                          ;—ˆ’€’œ ‘…Š’Ž 0
                LD A,1                          ;1 ‘…Š’Ž
                LD HL,BUF_512                   ;€„…‘ “”…€ —’…ˆŸ
                PUSH HL
                LD IYL,INTERNAL
                CALL TO_DRV
                DB _DEV_READ
                DEC HL
                LD D,(HL)
                DEC HL
                LD E,(HL)
                LD HL,0XAA55
                AND A
                SBC HL,DE
                POP IY
                LD (ADRTEKV),IX
                CALL Z,READ_MBR
                POP HL
                RET

;‡€Ž‘ €‰„…ŽƒŽ ˆ ’…Š“™…ƒŽ ‚›€ŽƒŽ “‘’Ž‰‘’‚€
IKOL_VOL        LD HL,(ADRTEKV)                 ;€„…‘ ’…Š“™…ƒŽ ‚›€ŽƒŽ €‡„…‹€
                INC HL
                INC HL
                LD A,(HL)                       ;’ˆ €‡„…‹€
                LD DE,(KOLDVOL)                 ;D-ŽŒ… ‚›€ŽƒŽ €‡„…‹€, E-ŠŽ‹ˆ—…‘’‚Ž €‰„…›• €‡„…‹Ž‚
                LD HL,BUF_TABLVOL               ;€„…‘ €—€‹€ ’€‹ˆ–› €‰„…›• €‡„…‹Ž‚
                AND A
                RET

;‚›—ˆ‘‹…ˆ… ŠŽ‹ˆ—…‘’‚€ €‰„…›• €‡„…‹Ž‚ € ‚‘…• “‘’Ž‰‘’‚€•
SETVOLD         LD A,IXL
                RRCA
                RRCA
                RRCA
                AND 0X1F
                LD (KOLDVOL),A
                RET

;‚›Ž €‡„…‹€ ˆ ˆˆ’ …ƒŽ ……Œ…›•
FREINIT_VOL     LD L,A
                LD A,IYL
                AND A
                JR Z,FREINITVOL1
                LD A,(RREG_A)
FREINITVOL1     LD IYL,INTERNAL
                CALL SET_VOL1
                CALL INIT_FATVARS
                JP INIRTSC

;‚›Ž €‡„…‹€
SET_VOL         LD L,A
                LD A,IYL
                AND A
                LD A,L
                JR NZ,SET_VOL1
                LD A,(RREG_A)
                LD HL,KOLVOL1
                PUSH HL
SET_VOL1        PUSH AF
                CALL SAVE_FNDVOL
                POP AF
SET_VOL_MNT     LD HL,KOLDVOL
                CP (HL)
                CCF
                RET C
                LD (SETDVOL),A
                LD L,A
                LD H,0
                ADD HL,HL
                ADD HL,HL
                ADD HL,HL
                LD DE,BUF_TABLVOL
                ADD HL,DE
                LD (ADRTEKV),HL
                LD A,(HL)
;               CP 4
;               LD HL,DISKETA           ;…™… … Ž‘ˆ‹ˆ‹
;               JR C,SET_DRV
                CP _SL_USBF
                LD HL,COMUSBF
                JR Z,SET_DRV
                CP _SD_SDZ
                LD HL,COMSDZ
                JR Z,SET_DRV
                CP _SD_SDG
                LD HL,COMSDG
                JR Z,SET_DRV
                LD HL,COMHDDN
SET_DRV         LD (GO_DEV),HL
                CALL LOAD_FNDVOL
                LD HL,0XFE
                PUSH IX
                LD IX,BUF_TABLVOL
                ROMCALL CRC16_FAST,ROM_RST81
                POP IX
                LD (CRC_DRVS),HL
                XOR A
                RET

SAVE_FNDVOL     PUSH IX
                LD HL,0XFE
                LD IX,ERORDRV
                ROMCALL CRC16_FAST,ROM_RST81
                POP IX
                LD (CRC_VOL),HL                 ;‚›—ˆ‘‹…ˆ… CRC €‡„…‹€ ……„ ‘Ž•€…ˆ…Œ
                EVOPORT WIN_P5,RAM_FATVARS
                LD A,(SETDVOL)
                ADD A,HIGH (CPU5+BUF_ALLVOL)+4
                LD D,A
                LD E,0
                LD HL,BUF_TEKVOL
                LD BC,0X100
                LDIR
                RET

LOAD_FNDVOL     EVOPORT WIN_P5,RAM_FATVARS
                LD A,(SETDVOL)
                ADD A,HIGH (CPU5+BUF_ALLVOL)+4
                LD H,A
                LD L,0
                LD DE,BUF_TEKVOL
                LD BC,0X100
                LDIR
;               PUSH IX
;               LD HL,0XFE
;               LD IX,ERORDRV
;               ROMCALL CRC16_FAST,P_ADDON1
;               POP IX
;               LD DE,(CRC_VOL)
;               AND A
;               SBC HL,DE
;               JP NZ,REDEVFIND
                CALL ICOM_FAT
                DB _INIT_TEKDIR
                RET

CMP_SDCARD      LD A,(SETDVOL)
                CP _SD_SDG
                JR NZ,CMPSDCARD1
                LD H,CMOS_BYTE_01
                ROMCALL READCMOS,ROM_RST82
                LD A,L
                AND M_ACCESSSDG                 ;Ž‚…Š€ €‡…˜…ˆŸ „Ž‘’“€ Š SD Š€’… NEOGS
                RET Z
CMPSDCARD1      PUSH IY
                LD IYL,INTERNAL
                CALL TO_DRV
                DB _DEV_STATUS
                POP IY
                INC A
                RET

READ_MBR        LD DE,0X01BE                    ;‘Œ…™…ˆ… ‚ 0 ‘…Š’Ž… “‘’Ž‰‘’‚€ „Ž ’€‹ˆ–› MBR
                PUSH IY
                ADD IY,DE                       ;“‘’€Ž‚ˆ‹ˆ “Š€‡€’…‹œ € €—€‹Ž Žˆ‘€’…‹…‰ €‡„…‹Ž‚
                LD BC,0X0400                    ;€‡„…‹Ž‚ Œ€Š‘ˆŒ“Œ 4 ˆ Ž“‹ˆ‹ˆ ‘—…’—ˆŠ €‡„…‹Ž‚ ‘ FAT
RDMBR0          LD A,(IY)                       ;…‚›‰ €‰’ 16 €‰’ŽƒŽ Žˆ‘€’…‹Ÿ
                AND A                           ;„Ž‹†… ›’œ €‚… 0
                JR Z,RDMBR1
                CP 0X80                         ;ˆ‹ˆ 0X80 (ˆ‡€Š ‡€ƒ“‡Ž—ŽƒŽ €‡„…‹€)
                JR NZ,RDMBR2
RDMBR1          LD A,(IY+4)                     ;€‰’ ’ˆ€ €‡„…‹€
                CALL CP_RAZD                    ;Ž‚…Š€ ’ˆ€ €‡„…‹€
                JR NZ,RDMBR2                    ;…‘‹ˆ … FAT ’Ž Ž‚…Ÿ…Œ ‘‹…„“ž™“ž 16 €‰’“ž ‡€ˆ‘œ
                INC C
RDMBR2          LD DE,0X10
                ADD IY,DE
                DJNZ RDMBR0                     ;Ž‚…Ÿ…Œ ‘‹…„“ž™“ž 16 €‰’“ž ‡€ˆ‘œ ‚ MBR
                LD A,C
                AND A
                POP HL
                JP NZ,SCANMBR
                PUSH HL
                POP IY
                LD C,(IY+0X0D)
                XOR A
                LD E,A
                LD B,8
                RR C
                ADC A,0
                DJNZ $-4
                DEC A
                JR NZ,$+3
                INC E
                LD A,(IY+0X0E)
                OR (IY+0X0F)
                JR Z,$+3
                INC E
;               LD A,(IY+0X13)
;               OR (IY+0X14)
;               JR Z,$+3
;               INC E
;               LD A,(IY+0X20)
;               OR (IY+0X21)
;               OR (IY+0X22)
;               OR (IY+0X22)
;               JR Z,$+3
;               INC E
                LD A,(IY+0X15)
                AND 0XF0
                CP 0XF0
                JR NZ,$+3
                INC E
                LD A,E
                CP 3;4
                RET NZ
                LD A,(TEK_TYPE)
                BIT 7,A
                LD B,0
                JR Z,$+3
                INC B
                AND 0X7F
                LD C,A
                PUSH IX
                POP HL
                XOR A
                LD (HL),C
                INC HL
                LD (HL),B
                INC HL
                LD (HL),0XFF
                INC HL
                LD (HL),A
                INC HL
                LD (HL),A
                INC HL
                LD (HL),A
                INC HL
                LD (HL),A
                INC HL
                LD (HL),A
                LD DE,8
                ADD IX,DE
INIT_VOL        PUSH IY
                LD IYL,INTERNAL
                CALL SETVOLD
                DEC A
                LD (SETDVOL),A
                LD L,A
                LD H,0
                ADD HL,HL
                ADD HL,HL
                ADD HL,HL
                LD DE,BUF_TABLVOL
                ADD HL,DE
                LD (ADRTEKV),HL
                LD A,(HL)
                AND 0X7F
;               CP 4
;               LD HL,DISKETA           ;…™… … Ž‘ˆ‹ˆ‹
;               JR C,DSET_DRV
                CP _SL_USBF
                LD HL,COMUSBF
                JR Z,DSET_DRV
                CP _SD_SDZ
                LD HL,COMSDZ
                JR Z,DSET_DRV
                CP _SD_SDG
                LD HL,COMSDG
                JR Z,DSET_DRV
                LD HL,COMHDDN
DSET_DRV        LD (GO_DEV),HL
                CALL IKOL_VOL
                CALL ICOM_FAT
                DB _INIT_FATVARS
                LD (IX-6),A
                POP IY
                RET

;€ ‚•Ž„…:
;A-BIT 7-0/1-MASTER/SLAVE
;BITS 6-0-’ˆ Ž‘ˆ’…‹Ÿ
SCANMBR         LD DE,0X01BE
                ADD HL,DE
                EXX
                LD A,(TEK_TYPE)
                BIT 7,A
                LD B,0
                JR Z,$+3
                INC B
                AND 0X7F
                LD C,A
                EXX
                LD A,4
SCNMBR0         PUSH AF
                LD A,(HL)
                LD C,4
                ADD HL,BC
                LD C,0X0C
                AND A
                JR Z,SCNMBR1
                CP 0X80
                JR NZ,SCNMBR2
SCNMBR1         LD A,(HL)
                AND A
                JR Z,SCNMBR2
                CALL CP_RAZD
                JR NZ,SCNMBR2
SCNMBR3         EXX
                LD (IX+0),C
                LD (IX+1),B
                EXX
                LD (IX+2),E                     ;“‘’€Ž‚Š€ ’ˆ€ FAT
                PUSH IX
                POP DE
                INC DE
                INC DE
                INC DE
                LD C,4
                ADD HL,BC
                LDI
                LDI
                LDI
                LDI
                LD (IX+7),0                     ;…‡…‚›‰ €‰’
SCNMBR4         LD C,8
                ADD IX,BC
                LD C,4
SCNMBR2         ADD HL,BC
                POP AF
                DEC A
                JR NZ,SCNMBR0
                RET

SET_DEVICE      PUSH AF
                PUSH HL
                LD A,B
                AND 0X0F
                LD B,A
                LD HL,(ADRTEKV)
                INC HL
                LD A,(HL)
                AND 1                           ;MASTER ˆ‹ˆ SLAVE?
                RLCA
                RLCA
                RLCA
                RLCA
                OR 0XE0                         ;‚‘…ƒ„€ LBA …†ˆŒ
                OR B
                LD B,A                          ;“‘’€Ž‚ˆ‹ˆ ‚›€Ž… “‘’Ž‰‘’‚Ž MASTER ˆ‹ˆ SLAVE
                POP HL
                POP AF
                RET

;Ž‚…Š€ ’ˆ€ €‡„…‹€
CP_RAZD         LD E,1                          ;FAT16
                CP 4
                RET Z
                CP 6
                RET Z
                CP 0X0E
                RET Z
                LD E,2                          ;FAT32
                CP 0X0B
                RET Z
                CP 0X0C
                RET Z
                LD E,0                          ;FAT12
                CP 1
                RET

;‚…Œ…€Ÿ ”“Š–ˆŸ ‚›‡Ž‚€ „€‰‚…€ HDD NEMO
COMHDDNEX       CALL P5_READ_BYTE
                LD A,(RREG_AA)
                EX AF,AF'

                LD A,(RREG_A)
                LD DE,(RREG_E)
                LD BC,(RREG_C)
                LD HL,(RREG_L)
                CALL COMHDDN
                LD (RREG_A),A
                LD (RREG_L),HL
                LD (RREG_E),DE
                LD (RREG_C),BC
                RET

;ŠŽˆŽ‚€ˆ… ’€‹ˆ–› €‰„…›• €‡„…‹Ž‚ ‚Ž ‚…˜žž Žƒ€ŒŒ“
GET_FNDVOLUME   LD BC,0X100                     ;……Ž‘ 256 €‰’
                LD DE,(RREG_L)                  ;€„…‘ Š“„€ ……Ž‘ˆ’œ
                LD HL,BUF_TABLVOL-CPU6
                JP LDIR_BYTES

CONTROL_SD      LD A,(FLAGS_DRV)
                PUSH AF
                CALL FIND_SD
                LD C,A
                AND 3
                LD (RREG_A),A
                LD A,C
                POP BC
                CP B
                JP NZ,SD_CARD_LOST
                RET

FIND_SD         PUSH IY
                LD IYL,INTERNAL
                LD E,0
                LD A,(FLAGS_DRV)
                AND B_INST_SDG
                JR Z,CRTLSD1                    ;…‘‹ˆ „€‰‚… … “‘’€Ž‚‹…
                PUSH HL
                PUSH DE
                CALL COMSDG
                DB _DEV_STATUS
                POP DE
                POP HL
                AND A
                SET 1,E                         ;…‘’œ SD Š€’€ NEOGS
                JR Z,CRTLSD1
                RES 1,E                         ;Š€’› …’
                EX DE,HL
                LD HL,FLAGS_DRV
                RES 7,(HL)
                EX DE,HL
CRTLSD1         PUSH HL
                CALL COMSDZ
                DB _DEV_STATUS
                POP HL
                AND A
                SET 0,E                         ;…‘’œ SD Š€’› ZC
                JR Z,CRTLSD2
                RES 0,E                         ;Š€’› …’
CRTLSD2         POP IY
                LD HL,FLAGS_DRV
                LD A,0XFC
                AND (HL)
                OR E
                LD (HL),A
                RET