Subversion Repositories pentevo

Rev

Rev 553 | Rev 586 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1.  
  2. ;LAST UPDATE: 24.05.2012 savelij
  3.  
  4. MASTER          EQU 0
  5. SLAVE           EQU 0X80
  6.  
  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.  
  16. EXTERNAL        EQU 0                   ;ВНЕШНИЙ ВЫЗОВ
  17. INTERNAL        EQU 1                   ;ВНУТРЕННИЙ ВЫЗОВ
  18. INT4EXT         EQU 3                   ;ВНУТРЕННИЙ ВЫЗОВ ДЛЯ ВЫЗВАВШЕЙ ПРОГИ
  19.  
  20. ;ВЫЗОВ ВЫБРАННОГО ДРАЙВЕРА
  21. TO_DRV          PUSH HL
  22.                 LD L,A
  23.                 LD A,IYL
  24.                 AND A
  25.                 LD A,L
  26.                 JR NZ,TO_DRV1
  27.                 CALL READ_BYTE
  28.                 LD A,(RREG_A)
  29.                 LD DE,(RREG_E)
  30.                 LD BC,(RREG_C)
  31.                 LD HL,(RREG_L)
  32.                 EX (SP),HL
  33. TO_DRV1         LD HL,(GO_DEV)
  34.                 EX (SP),HL
  35.                 RET
  36.  
  37. ;ВНЕШНИЙ ВЫЗОВ МЕНЕДЖЕРА УСТРОЙСТВ
  38. COM_DEV         EX AF,AF'
  39.                 CALL READ_BYTE
  40.                 LD A,(NEXTBYTERST8)
  41.                 PUSH IY
  42.                 LD IYL,EXTERNAL                 ;ВНЕШНИЙ ВЫЗОВ
  43. NEXT_ICOM_DEV   PUSH IX
  44.                 PUSH HL
  45.                 LD HL,EXITDEV
  46.                 EX (SP),HL
  47.                 PUSH HL
  48.                 ADD A,A
  49.                 ADD A,LOW (TABLDEV)
  50.                 LD L,A
  51.                 ADC A,HIGH (TABLDEV)
  52.                 SUB L
  53.                 LD H,A
  54.                 LD A,(HL)
  55.                 INC HL
  56.                 LD H,(HL)
  57.                 LD L,A
  58.                 EX AF,AF'
  59.                 EX (SP),HL
  60.                 RET
  61.  
  62. EXITDEV         POP IX
  63.                 POP IY
  64.                 RET
  65.  
  66. ;ВНУТРЕННИЙ ВЫЗОВ МЕНЕДЖЕРА УСТРОЙСТВ
  67. ICOM_DEV        EX AF,AF'
  68.                 EX (SP),HL
  69.                 LD A,(HL)
  70.                 INC HL
  71.                 EX (SP),HL
  72.                 PUSH IY
  73.                 LD IYL,INTERNAL                 ;ВНУТРЕННИЙ ВЫЗОВ
  74.                 JR NEXT_ICOM_DEV
  75.  
  76. TABLDEV         DW DEVFIND                      ;00 ПОИСК УСТРОЙСТВ
  77.                 DW SET_VOL                      ;01 ВЫБОР РАЗДЕЛА
  78.                 DW KOL_VOL                      ;02 ЗАПРОС НАЙДЕНОГО
  79.                 DW GET_FNDVOLUME                ;03 ПОЛУЧИТЬ ТАБЛИЦУ НАЙДЕННЫХ РАЗДЕЛОВ
  80.                 DW FREINIT_VOL                  ;04 ПОЛНАЯ ПЕРЕИНИЦИАЛИЗАЦИЯ РАЗДЕЛА
  81.                 DW TO_DRV                       ;05 ВЫЗОВ ДРАЙВЕРА ВЫБРАННОГО УСТРОЙСТВА
  82.                 DW SET_DEVICE                   ;06 УСТАНОВКА БИТОВ УСТРОЙСТВА И LBA РЕЖИМА
  83.                 DW COMHDDNEX                    ;07 ПРЯМОЙ ВЫЗОВ ДРАЙВЕРА HDD NEMO (ВРЕМЕННАЯ ФУНКЦИЯ)
  84.  
  85. ;ФОРМАТ ТАБЛИЦЫ НАЙДЕННЫХ РАЗДЕЛОВ
  86. ;+0(1)-0-DRIVE A
  87. ;      1-DRIVE B
  88. ;      2-DRIVE C
  89. ;      3-DRIVE D
  90. ;      4-SD КАРТА ZC
  91. ;      5-SD КАРТА NEOGS
  92. ;      6-HDD NEMO
  93. ;      7-HDD SMUC
  94. ;+1(1)-ДЛЯ SD-ТУПО 0
  95. ;      ИНАЧЕ HDD/CD 0-MASTER, 1-SLAVE
  96. ;+2(1)-ТИП РАЗДЕЛА, В ТАБЛИЦЕ ТОЛЬКО
  97. ;РАЗДЕЛЫ:
  98. ;00=01-FAT12
  99. ;01=04,06,0E-FAT16
  100. ;02=0B,0C-FAT32
  101. ;+3(4)-СТАРТОВЫЙ СЕКТОР РАЗДЕЛА
  102. ;+7(1)-РЕЗЕРВ
  103.  
  104. ;ТОЧКА ВХОДА ДЛЯ ПОИСКА РАЗДЕЛОВ
  105. ;HL-АДРЕС КУДА ПОКЛАСТЬ ТАБЛИЦУ РАЗДЕЛОВ
  106. ;НА ВЫХОДЕ:
  107. ;A-КОЛ-ВО РАЗДЕЛОВ
  108. DEVFIND         LD HL,0XFE
  109.                 LD IX,BUF_TABLVOL
  110.                 CALL CRC16
  111.                 LD BC,(BUF_TABLVOL+0XFE)
  112.                 AND A
  113.                 SBC HL,BC
  114.                 JP Z,KOL_VOL
  115.                 PUSH IY
  116.                 XOR A
  117.                 LD (KOLDVOL),A                  ;КОЛИЧЕСТОВ НАЙДЕННЫХ РАЗДЕЛОВ
  118.                 LD HL,BUF_TABLVOL
  119.                 LD D,H
  120.                 LD E,L
  121.                 INC DE
  122.                 LD BC,0XFD
  123.                 LD (HL),B
  124.                 LDIR
  125.                 LD IX,BUF_TABLVOL               ;АДРЕС ТАБЛИЦЫ НАЙДЕННЫХ РАЗДЕЛОВ
  126.                 LD IYL,INTERNAL
  127. ;NEMO
  128.                 LD HL,BUF_512                   ;АДРЕС БУФЕРА ДЛЯ ЗАГРУЗКИ СЕКТОРА (512 БАЙТ)
  129.                 CALL COMHDDN
  130.                 DB Dev_init                     ;ИНИЦИАЛИЗАЦИЯ УСТРОЙСТА С ОПРЕДЕЛЕНИЕМ ЧТО ПОДКЛЮЧЕНО
  131.                 LD A,H
  132.                 AND A
  133.                 LD A,HDDN+MASTER
  134.                 LD HL,BUF_512
  135.                 PUSH IY
  136.                 CALL Z,RD0HDD                   ;ПОИСК РАЗДЕЛОВ НА НАЙДЕННОМ УСТРОЙСТВЕ - HDD MASTER
  137.                 POP IY
  138. ;SD ON NEOGS
  139.                 LD H,CMOS_BYTE_01
  140.                 CALL READCMOS
  141.                 AND ACCESSSDG                   ;ПРОВЕРКА РАЗРЕШЕНИЯ ДОСТУПА К SD КАРТЕ NEOGS
  142.                 JR Z,DEVFND1                    ;ЕСЛИ ЗАПРЕЩЕН, ТО НЕ ВЫЗЫВАЕМ
  143.                 CALL INSTSDD                    ;УCТАНОВКА ДРАЙВЕРА SD КАРТЫ НА NEOGS
  144.                 AND A
  145.                 JR NZ,DEVFND1                   ;НЕ ИНИЦИАЛИЗИРОВАТЬ ЕСЛИ NEOGS НЕ НАЙДЕН
  146.                 CALL COMSDG
  147.                 DB Dev_init                     ;ИНИЦИАЛИЗАЦИЯ SD КАРТЫ НА NEOGS
  148.                 AND A
  149.                 PUSH IY
  150.                 CALL Z,RD0SDG                   ;ПОИСК РАЗДЕЛОВ НА УСТРОЙСТВЕ
  151.                 POP IY
  152. ;SD ON Z-CONTROLLER
  153. DEVFND1         CALL COMSDZ
  154.                 DB Dev_init                     ;ИНИЦИАЛИЗАЦИЯ SD КАРТЫ
  155.                 AND A
  156.                 PUSH IY
  157.                 CALL Z,RD0SD                    ;ПОИСК РАЗДЕЛОВ НА УСТРОЙСТВЕ
  158.                 POP IY
  159.                 LD IYL,EXTERNAL
  160.                 CALL SETVOLD                    ;ВЫЧИСЛЕНИЕ КОЛИЧЕСТВА НАЙДЕННЫХ РАЗДЕЛОВ НА ВСЕХ УСТРОЙСТВАХ
  161.                 POP IY
  162.                 SCF
  163.                 JP Z,KOLVOL1
  164. INIT_VOLS       LD IX,BUF_TABLVOL
  165.                 LD A,(KOLDVOL)
  166.                 LD E,A
  167.                 LD D,0
  168. IV_SETDRV2      PUSH AF
  169.                 LD A,D
  170.                 LD (SETDVOL),A
  171.                 LD A,(IX+0)
  172.                 SUB 4
  173.                 LD HL,COMSDZ
  174.                 JR Z,IV_SETDRV1
  175.                 DEC A
  176.                 LD HL,COMSDG
  177.                 JR Z,IV_SETDRV1
  178.                 LD HL,COMHDDN
  179. IV_SETDRV1      LD (GO_DEV),HL
  180.                 LD A,(IX+2)
  181.                 LD HL,BUF_TABLVOL
  182.                 PUSH DE
  183.                 CALL ICOM_FAT
  184.                 DB Init_fatvars
  185.                 CALL SAVE_FNDVOL
  186.                 POP DE
  187.                 INC D
  188.                 LD BC,8
  189.                 ADD IX,BC
  190.                 POP AF
  191.                 DEC A
  192.                 JR NZ,IV_SETDRV2
  193.                 CALL ICOM_FAT
  194.                 DB Init_tekdir
  195.                 LD HL,0XFE
  196.                 LD IX,BUF_TABLVOL
  197.                 CALL CRC16
  198.                 LD (BUF_TABLVOL+0XFE),HL
  199. KOL_VOL         LD A,IYL
  200.                 AND A
  201.                 JR NZ,IKOL_VOL
  202.                 LD HL,(ADRTEKV)                 ;АДРЕС ТЕКУЩЕГО ВЫБРАННОГО РАЗДЕЛА
  203.                 INC HL
  204.                 INC HL
  205.                 LD A,(HL)                       ;ТИП РАЗДЕЛА
  206.                 LD HL,(KOLDVOL)                 ;D-НОМЕР ВЫБРАННОГО РАЗДЕЛА, E-КОЛИЧЕСТВО НАЙДЕННЫХ РАЗДЕЛОВ
  207.                 LD (RREG_E),HL
  208.                 AND A
  209. KOLVOL1         PUSH AF
  210.                 POP HL
  211.                 LD (RREG_F),HL
  212.                 RET
  213.  
  214. ;ЗАПРОС НАЙДЕНОГО И ТЕКУЩЕГО ВЫБРАННОГО УСТРОЙСТВА
  215. IKOL_VOL        LD HL,(ADRTEKV)                 ;АДРЕС ТЕКУЩЕГО ВЫБРАННОГО РАЗДЕЛА
  216.                 INC HL
  217.                 INC HL
  218.                 LD A,(HL)                       ;ТИП РАЗДЕЛА
  219.                 LD DE,(KOLDVOL)                 ;D-НОМЕР ВЫБРАННОГО РАЗДЕЛА, E-КОЛИЧЕСТВО НАЙДЕННЫХ РАЗДЕЛОВ
  220.                 LD HL,BUF_TABLVOL               ;АДРЕС НАЧАЛА ТАБЛИЦЫ НАЙДЕННЫХ РАЗДЕЛОВ
  221.                 AND A
  222.                 RET
  223.  
  224. ;ВЫЧИСЛЕНИЕ КОЛИЧЕСТВА НАЙДЕННЫХ РАЗДЕЛОВ НА ВСЕХ УСТРОЙСТВАХ
  225. SETVOLD         LD A,IXL
  226.                 RRCA
  227.                 RRCA
  228.                 RRCA
  229.                 AND 0X1F
  230.                 LD (KOLDVOL),A
  231.                 RET
  232.  
  233. FREINIT_VOL     LD L,A
  234.                 LD A,IYL
  235.                 AND A
  236.                 JR Z,FREINITVOL1
  237.                 LD A,(RREG_A)
  238. FREINITVOL1     LD IYL,INTERNAL
  239.                 CALL SET_VOL1
  240.                 CALL INIT_FATVARS
  241.                 JP INIRTSC
  242.  
  243. ;ВЫБОР РАЗДЕЛА
  244. SET_VOL         LD L,A
  245.                 LD A,IYL
  246.                 AND A
  247.                 LD A,L
  248.                 JR NZ,SET_VOL1
  249.                 LD A,(RREG_A)
  250.                 LD HL,KOLVOL1
  251.                 PUSH HL
  252. SET_VOL1        PUSH AF
  253.                 CALL SAVE_FNDVOL
  254.                 POP AF
  255. SET_VOL_MNT     LD HL,KOLDVOL
  256.                 CP (HL)
  257.                 CCF
  258.                 RET C
  259.                 LD (SETDVOL),A
  260.                 LD L,A
  261.                 LD H,0
  262.                 ADD HL,HL
  263.                 ADD HL,HL
  264.                 ADD HL,HL
  265.                 LD DE,BUF_TABLVOL
  266.                 ADD HL,DE
  267.                 LD (ADRTEKV),HL
  268.                 LD A,(HL)
  269.                 CP 4
  270. ;               LD HL,DISKETA           ;ЕЩЕ НЕ ОСИЛИЛ
  271.                 JR C,SET_DRV
  272.                 SUB 4
  273.                 LD HL,COMSDZ
  274.                 JR Z,SET_DRV
  275.                 DEC A
  276.                 LD HL,COMSDG
  277.                 JR Z,SET_DRV
  278.                 LD HL,COMHDDN
  279. SET_DRV         LD (GO_DEV),HL
  280.                 CALL LOAD_FNDVOL
  281.                 LD HL,0XFE
  282.                 PUSH IX
  283.                 LD IX,BUF_TABLVOL
  284.                 CALL CRC16
  285.                 POP IX
  286.                 LD (BUF_TABLVOL+0XFE),HL
  287.                 XOR A
  288.                 RET
  289.  
  290. SAVE_FNDVOL     LD BC,WIN_P1
  291.                 LD A,PAGE_FATVARS
  292.                 OUT (C),A
  293.                 LD A,(SETDVOL)
  294.                 ADD A,HIGH (CPU1+BUF_ALLVOL)+4
  295.                 LD D,A
  296.                 LD E,0
  297.                 LD HL,BUF_TEKVOL
  298.                 LD BC,0X100
  299.                 LDIR
  300.                 RET
  301.  
  302. LOAD_FNDVOL     LD BC,WIN_P1
  303.                 LD A,PAGE_FATVARS
  304.                 OUT (C),A
  305.                 LD A,(SETDVOL)
  306.                 ADD A,HIGH (CPU1+BUF_ALLVOL)+4
  307.                 LD H,A
  308.                 LD L,0
  309.                 LD DE,BUF_TEKVOL
  310.                 LD BC,0X100
  311.                 LDIR
  312.                 CALL ICOM_FAT
  313.                 DB Init_tekdir
  314.                 RET
  315.  
  316. ;ПОИСК РАЗДЕЛОВ НА SD КАРТЕ NEOGS
  317. RD0SDG          LD HL,BUF_512
  318.                 LD A,SDG
  319.                 PUSH AF
  320.                 LD DE,0
  321.                 LD B,D
  322.                 LD C,E
  323.                 PUSH HL
  324.                 LD A,1
  325.                 CALL COMSDG
  326.                 DB Dev_read
  327.                 JR RD0HDD_
  328.  
  329. ;ПОИСК РАЗДЕЛОВ НА SD КАРТЕ Z-КОНТРОЛЛЕРА
  330. RD0SD           LD HL,BUF_512
  331.                 LD A,SDZ
  332.                 PUSH AF
  333.                 LD DE,0
  334.                 LD B,D
  335.                 LD C,E
  336.                 PUSH HL
  337.                 LD A,1
  338.                 CALL COMSDZ
  339.                 DB Dev_read
  340.                 JR RD0HDD_
  341.  
  342. ;ПОИСК РАЗДЕЛОВ НА HDD NEMO
  343. RD0HDD          PUSH AF
  344.                 PUSH HL
  345.                 LD (ADRTEKV),IX
  346. ;               LD B,A
  347.                 AND 0X80
  348.                 RLCA
  349.                 LD (IX+1),A
  350. ;               LD A,B
  351.                 LD DE,0
  352.                 LD B,D
  353.                 LD C,E
  354.                 LD A,1
  355.                 CALL COMHDDN
  356.                 DB Dev_read
  357. RD0HDD_         LD DE,0X01BE                    ;СМЕЩЕНИЕ В 0 СЕКТОРЕ УСТРОЙСТВА ДО ТАБЛИЦЫ MBR
  358.                 POP IY
  359.                 PUSH IY
  360.                 ADD IY,DE                       ;УСТАНОВИЛИ УКАЗАТЕЛЬ НА НАЧАЛО ОПИСАТЕЛЕЙ РАЗДЕЛОВ
  361.                 LD BC,0X0400                    ;РАЗДЕЛОВ МАКСИМУМ 4 И ОБНУЛИЛИ СЧЕТЧИК РАЗДЕЛОВ С FAT
  362. RD0HDD0         LD A,(IY)                       ;ПЕРВЫЙ БАЙТ 16 БАЙТНОГО ОПИСАТЕЛЯ
  363.                 AND A                           ;ДОЛЖЕН БЫТЬ РАВЕН 0
  364.                 JR Z,RD0HDD1
  365.                 CP 0X80                         ;ИЛИ 0X80 (ПРИЗНАК ЗАГРУЗОЧНОГО РАЗДЕЛА)
  366.                 JR NZ,RD0HDD2
  367. RD0HDD1         LD A,(IY+4)                     ;БАЙТ ТИПА РАЭДЕЛА
  368.                 CALL CP_RAZD                    ;ПРОВЕРКА ТИПА РАЗДЕЛА
  369.                 JR NZ,RD0HDD2                   ;ЕСЛИ НЕ FAT ТО ПРОВЕРЯЕМ СЛЕДУЮЩУЮ 16 БАЙТНУЮ ЗАПИСЬ
  370.                 INC C
  371. RD0HDD2         LD DE,0X10
  372.                 ADD IY,DE
  373.                 DJNZ RD0HDD0                    ;ПРОВЕРЯЕМ СЛЕДУЮЩУЮ 16 БАЙТНУЮ ЗАПИСЬ В MBR
  374.                 LD A,C
  375.                 AND A
  376.                 POP HL
  377.                 JP NZ,SCANMBR
  378.                 PUSH HL
  379.                 POP IY
  380.                 LD C,(IY+0X0D)
  381.                 XOR A
  382.                 LD E,A
  383.                 LD B,8
  384.                 RR C
  385.                 ADC A,0
  386.                 DJNZ $-4
  387.                 DEC A
  388.                 JR NZ,$+3
  389.                 INC E
  390.                 LD A,(IY+0X0E)
  391.                 OR (IY+0X0F)
  392.                 JR Z,$+3
  393.                 INC E
  394.                 LD A,(IY+0X13)
  395.                 OR (IY+0X14)
  396.                 JR NZ,$+3
  397.                 INC E
  398.                 LD A,(IY+0X20)
  399.                 OR (IY+0X21)
  400.                 OR (IY+0X22)
  401.                 OR (IY+0X22)
  402.                 JR NZ,$+3
  403.                 INC E
  404.                 LD A,(IY+0X15)
  405.                 AND 0XF0
  406.                 CP 0XF0
  407.                 JR NZ,$+3
  408.                 INC E
  409.                 LD A,E
  410.                 CP 4
  411.                 INC SP
  412.                 INC SP
  413.                 RET NZ
  414.                 DEC SP
  415.                 DEC SP
  416.                 POP AF
  417.                 BIT 7,A
  418.                 LD B,0
  419.                 JR Z,$+3
  420.                 INC B
  421.                 AND 0X7F
  422.                 LD C,A
  423.                 PUSH IX
  424.                 POP HL
  425.                 XOR A
  426.                 LD (HL),C
  427.                 INC HL
  428.                 LD (HL),B
  429.                 INC HL
  430.                 LD (HL),0XFF
  431.                 INC HL
  432.                 LD (HL),A
  433.                 INC HL
  434.                 LD (HL),A
  435.                 INC HL
  436.                 LD (HL),A
  437.                 INC HL
  438.                 LD (HL),A
  439.                 INC HL
  440.                 LD (HL),A
  441.                 LD DE,8
  442.                 ADD IX,DE
  443. INIT_VOL        PUSH IY
  444.                 LD IYL,INTERNAL
  445.                 CALL SETVOLD
  446.                 DEC A
  447.                 LD (SETDVOL),A
  448.                 LD L,A
  449.                 LD H,0
  450.                 ADD HL,HL
  451.                 ADD HL,HL
  452.                 ADD HL,HL
  453.                 LD DE,BUF_TABLVOL
  454.                 ADD HL,DE
  455.                 LD (ADRTEKV),HL
  456.                 LD A,(HL)
  457.                 CP 4
  458. ;               LD HL,DISKETA           ;ЕЩЕ НЕ ОСИЛИЛ
  459.                 JR C,DSET_DRV
  460.                 SUB 4
  461.                 LD HL,COMSDZ
  462.                 JR Z,DSET_DRV
  463.                 DEC A
  464.                 LD HL,COMSDG
  465.                 JR Z,DSET_DRV
  466.                 LD HL,COMHDDN
  467. DSET_DRV        LD (GO_DEV),HL
  468.                 CALL IKOL_VOL
  469.                 CALL ICOM_FAT
  470.                 DB Init_fatvars
  471.                 LD (IX-6),A
  472.                 POP IY
  473.                 RET
  474.  
  475. ;НА ВХОДЕ:
  476. ;A-BIT 7-0/1-MASTER/SLAVE
  477. ;BITS 6-0-ТИП НОСИТЕЛЯ
  478. SCANMBR         POP AF
  479.                 LD DE,0X01BE
  480.                 ADD HL,DE
  481.                 EXX
  482.                 BIT 7,A
  483.                 LD B,0
  484.                 JR Z,$+3
  485.                 INC B
  486.                 AND 0X7F
  487.                 LD C,A
  488.                 EXX
  489.                 LD B,0
  490.                 LD A,4
  491. SCNMBR0         PUSH AF
  492.                 LD A,(HL)
  493.                 LD C,4
  494.                 ADD HL,BC
  495.                 LD C,0X0C
  496.                 AND A
  497.                 JR Z,SCNMBR1
  498.                 CP 0X80
  499.                 JR NZ,SCNMBR2
  500. SCNMBR1         LD A,(HL)
  501.                 AND A
  502.                 JR Z,SCNMBR2
  503.                 CALL CP_RAZD
  504.                 JR NZ,SCNMBR2
  505. SCNMBR3         EXX
  506.                 LD (IX),C
  507.                 LD (IX+1),B
  508.                 EXX
  509.                 LD (IX+2),E
  510.                 LD C,4
  511.                 PUSH IX
  512.                 POP DE
  513.                 INC DE
  514.                 INC DE
  515.                 INC DE
  516.                 ADD HL,BC
  517.                 LDI
  518.                 LDI
  519.                 LDI
  520.                 LDI
  521.                 LD (IX+7),0
  522. SCNMBR4         LD C,8
  523.                 ADD IX,BC
  524.                 LD C,4
  525. SCNMBR2         ADD HL,BC
  526.                 POP AF
  527.                 DEC A
  528.                 JR NZ,SCNMBR0
  529.                 RET
  530.  
  531. SET_DEVICE      PUSH AF
  532.                 PUSH HL
  533.                 LD A,B
  534.                 AND 0X0F
  535.                 LD B,A
  536.                 LD HL,(ADRTEKV)
  537.                 INC HL
  538.                 LD A,(HL)
  539.                 AND 1                           ;MASTER ИЛИ SLAVE?
  540.                 RLCA
  541.                 RLCA
  542.                 RLCA
  543.                 RLCA
  544.                 OR 0XE0                         ;ВСЕГДА LBA РЕЖИМ
  545.                 OR B
  546.                 LD B,A                          ;УСТАНОВИЛИ ВЫБРАННОЕ УСТРОЙСТВО MASTER ИЛИ SLAVE
  547.                 POP HL
  548.                 POP AF
  549.                 RET
  550.  
  551. ;ПРОВЕРКА ТИПА РАЗДЕЛА
  552. CP_RAZD         LD E,1                          ;FAT16
  553.                 CP 4
  554.                 RET Z
  555.                 CP 6
  556.                 RET Z
  557.                 CP 0X0E
  558.                 RET Z
  559.                 LD E,2                          ;FAT32
  560.                 CP 0X0B
  561.                 RET Z
  562.                 CP 0X0C
  563.                 RET Z
  564.                 LD E,0                          ;FAT12
  565.                 CP 1
  566.                 RET
  567.  
  568. ;ВРЕМЕННАЯ ФУНКЦИЯ ВЫЗОВА ДРАЙВЕРА HDD NEMO
  569. COMHDDNEX       CALL READ_BYTE
  570.                 LD A,(RREG_A)
  571.                 LD DE,(RREG_E)
  572.                 LD BC,(RREG_C)
  573.                 LD HL,(RREG_L)
  574.                 JP COMHDDN
  575.  
  576. ;КОПИРОВАНИЕ ТАБЛИЦЫ НАЙДЕННЫХ РАЗДЕЛОВ ВО ВНЕШНЮЮ ПРОГРАММУ
  577. GET_FNDVOLUME   LD BC,0X100                     ;ПЕРЕНОС 256 БАЙТ
  578.                 LD DE,(RREG_L)                  ;АДРЕС КУДА ПЕРЕНОСИТЬ
  579.                 LD HL,BUF_TABLVOL-CPU2
  580.                 JP LDIR_BYTES
  581.