Subversion Repositories pentevo

Rev

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

  1.  
  2. ;LAST UPDATE: 26.12.2012 savelij
  3.  
  4. ;АДРЕС ЦИКЛА ОБЩЕНИЯ СО СПЕКОМ
  5. COMINT_         EQU 0X026E
  6.  
  7. ;АДРЕС УСТАНОВЩИКА ДРАЙВЕРА НА NeoGS
  8. SETUPSD         EQU 0X5B00
  9.  
  10. ;ДРАЙВЕР SD-CARD ДЛЯ NGS
  11.  
  12. ;ВХОДНЫЕ ПАРАМЕТРЫ ОБЩИЕ:
  13. ;HL-АДРЕС ЗАГРУЗКИ В ПАМЯТЬ
  14. ;BCDE-32-Х БИТНЫЙ НОМЕР СЕКТОРА
  15. ;A-КОЛИЧЕСТВО БЛОКОВ (БЛОК=512 БАЙТ)
  16. ;ТОЛЬКО ДЛЯ МНОГОБЛОЧНОЙ ЗАПИСИ/ЧТЕНИИ
  17.  
  18. ;ОШИБКИ ВЫДАВАЕМЫЕ НА ВЫХОДЕ:
  19. ;A=0-ИНИЦИАЛИЗАЦИЯ ПРОШЛА УСПЕШНО
  20. ;A=1-КАРТА НЕ НАЙДЕНА ИЛИ НЕ ОТВЕТИЛА
  21.  
  22. COMSDG          EX AF,AF'
  23.                 LD A,IYL
  24.                 AND A
  25.                 LD A,(NEXTBYTERST8)
  26.                 JR Z,COMSDG1
  27.                 EX (SP),HL
  28.                 LD A,(HL)
  29.                 INC HL
  30.                 EX (SP),HL
  31. COMSDG1         ADD A,A
  32.                 PUSH HL
  33.                 LD HL,RET4SDG
  34.                 EX (SP),HL
  35.                 PUSH HL
  36.                 LD HL,NGSSDT
  37.                 ADD A,L
  38.                 LD L,A
  39.                 ADC A,H
  40.                 SUB L
  41.                 LD H,A
  42.                 LD A,(HL)
  43.                 INC HL
  44.                 LD H,(HL)
  45.                 LD L,A
  46.                 EX AF,AF'
  47.                 EX (SP),HL
  48.                 RET
  49.  
  50. RET4SDG         PUSH AF
  51.                 LD A,IYL
  52.                 AND A
  53.                 JR NZ,RET4SDG1
  54.                 LD (RREG_L),HL
  55.                 EX (SP),HL
  56.                 LD (RREG_F),HL
  57.                 EX (SP),HL
  58. RET4SDG1        POP AF
  59.                 RET
  60.  
  61.  
  62. NGSSDT          DW GSDINIT      ;ИНИТ SD КАРТЫ
  63.                 DW GSDCMP       ;ПРОВЕРКА НАЛИЧИЯ SD КАРТЫ
  64.                 DW SDRDMUL      ;ЧИТАТЬ "A" СЕКТОРОВ
  65.                 DW SDWRMUL      ;ПИСАТЬ "A" СЕКТОРОВ
  66.  
  67. ;ЗАПИСЬ "A" СЕКТОРОВ
  68. SDWRMUL         EX AF,AF'
  69.                 LD A,_DEV_WRITE
  70.                 CALL COMM2SD
  71.                 EX AF,AF'
  72.                 PUSH DE
  73.                 PUSH BC
  74.                 LD BC,GSDAT
  75. SDWRSN1         EX AF,AF'
  76.                 OUT (GSCOM),A
  77.                 CALL WC_
  78.                 LD DE,0X0200
  79. SDWRSN2         OUTI
  80.                 CALL WD_
  81.                 DEC DE
  82.                 LD A,D
  83.                 OR E
  84.                 JR NZ,SDWRSN2
  85.                 EX AF,AF'
  86.                 DEC A
  87.                 JR NZ,SDWRSN1
  88.                 CALL WN_
  89.                 IN A,(GSDAT)
  90.                 CP 0X99                         ;КАРТА ПОТЕРЯЛАСЬ ПО ВРЕМЯ ЧТЕНИЯ/ЗАПИСИ
  91.                 JP Z,SD_CARD_LOST
  92.                 POP BC
  93.                 POP DE
  94.                 XOR A
  95.                 RET
  96.  
  97. ;ЧТЕНИЕ "A" СЕКТОРОВ
  98. SDRDMUL         EX AF,AF'
  99.                 LD A,_DEV_READ
  100.                 CALL COMM2SD
  101.                 EX AF,AF'
  102.                 PUSH DE
  103.                 PUSH BC
  104.                 LD D,A
  105.                 LD A,IYL
  106.                 BIT 1,A
  107.                 JR NZ,SDRDSN3
  108.                 AND A
  109.                 JR NZ,SDRDSN5
  110. SDRDSN3         LD A,(R_7FFD)
  111.                 AND 0X10
  112.                 LD BC,(B0_CPU2)
  113.                 JR Z,SDRDSN4
  114.                 LD BC,(B1_CPU2)
  115. SDRDSN4         LD A,0X37
  116.                 OR B
  117.                 LD B,A
  118.                 LD A,C
  119.                 LD C,LOW (WIN_A0)
  120.                 OUT (C),A
  121. SDRDSN5         LD A,D
  122.                 LD BC,GSDAT
  123. SDRDSN1         EX AF,AF'
  124.                 OUT (GSCOM),A
  125.                 IN A,(GSCOM)
  126.                 RRA
  127.                 JR C,$-3
  128.                 LD DE,0X0200                    ;ПРОДОЛЖАЕМ ЕСЛИ ВСЕ В ПОРЯДКЕ
  129. SDRDSN2         IN A,(GSCOM)
  130.                 RLA
  131.                 JR NC,$-3
  132.                 INI
  133.                 DEC DE
  134.                 LD A,D
  135.                 OR E
  136.                 JR NZ,SDRDSN2
  137.                 EX AF,AF'
  138.                 DEC A
  139.                 JR NZ,SDRDSN1
  140.                 IN A,(GSCOM)
  141.                 RLA
  142.                 JR NC,$-3
  143.                 IN A,(GSDAT)
  144.                 CP 0X99                         ;КАРТА ПОТЕРЯЛАСЬ ПО ВРЕМЯ ЧТЕНИЯ/ЗАПИСИ
  145.                 JP Z,SD_CARD_LOST
  146.                 LD BC,WIN_P2
  147.                 XOR A
  148.                 OUT (C),A
  149.                 POP BC
  150.                 POP DE
  151.                 RET
  152.  
  153. ;ПРОВЕРКА НАЛИЧИЯ КАРТОЧКИ
  154. GSDCMP          LD H,CMOS_BYTE_01
  155.                 PCALL READCMOS,P_ADDON1
  156.                 LD A,L
  157.                 AND ACCESSSDG                   ;ПРОВЕРКА РАЗРЕШЕНИЯ ДОСТУПА К SD КАРТЕ NEOGS
  158.                 JR Z,SD_NO                      ;ВЫХОД ЕСЛИ ДОСТУП К КАРТОЧКЕ ЗАПРЕЩЕН
  159.                 LD A,(FLAGS_DRV)
  160.                 AND B_INST_SDG
  161.                 JR Z,SD_NO                      ;ВЫХОД ЕСЛИ ДРАЙВЕР НЕ УСТАНОВЛЕН
  162.                 LD A,1
  163.                 JR GSDINIT1
  164.  
  165. ;ИНИЦИАЛИЗАЦИЯ КАРТОЧКИ
  166. GSDINIT         XOR A
  167. GSDINIT1        CALL COMM2SD
  168.                 CALL WN_
  169. GSDINIT2        IN A,(GSDAT)
  170. GSDINIT3        CP 0X99                         ;КАРТА ПОТЕРЯЛАСЬ ПО ВРЕМЯ ЧТЕНИЯ/ЗАПИСИ
  171.                 JP Z,SD_CARD_LOST
  172.                 CP 0X77
  173.                 JR NZ,SD_NO
  174.                 XOR A
  175.                 RET
  176.  
  177. SD_NO           LD A,1
  178.                 RET
  179.  
  180. ;ПЕРЕДАТЧИК КОМАНД/ПАРАМЕТРОВ В ДРАЙВЕР НА NeoGS
  181. COMM2SD         OUT (GSDAT),A           ;УШЛА КОМАНДА ДРАЙВЕРУ
  182.                 LD A,0X1E
  183.                 OUT (GSCOM),A
  184.                 CALL WC_                ;УШЛА КОМАНДА ПРОШИВКЕ
  185.                 LD A,B
  186.                 OUT (GSDAT),A
  187.                 CALL WD_                ;УШЛИ БИТЫ 31-24 ПАРАМЕТРОВ
  188.                 LD A,C
  189.                 OUT (GSDAT),A
  190.                 CALL WD_                ;УШЛИ БИТЫ 23-16 ПАРАМЕТРОВ
  191.                 LD A,D
  192.                 OUT (GSDAT),A
  193.                 CALL WD_                ;УШЛИ БИТЫ 15-8 ПАРАМЕТРОВ
  194.                 LD A,E
  195.                 OUT (GSDAT),A
  196.                 CALL WD_                ;УШЛИ БИТЫ 7-0 ПАРАМЕТРОВ
  197.                 EX AF,AF'
  198.                 OUT (GSDAT),A
  199.                 EX AF,AF'
  200.                 DUPL 9,0
  201.                 RET                     ;УШЛО КОЛ-ВО СЕКТОРОВ
  202.  
  203. ;ОЖИДАНИЕ КОГДА NeoGS БАЙТ ЗАБЕРЕТ
  204. WD_             IN A,(GSCOM)
  205.                 RLA
  206.                 JR C,$-3
  207.                 RET
  208.  
  209. ;ОЖИДАНИЕ КОГДА NeoGS ДАСТ БАЙТ
  210. WN_             IN A,(GSCOM)
  211.                 RLA
  212.                 JR NC,$-3
  213.                 RET
  214.  
  215. ;ОЖИДАНИЕ КОГДА NeoGS КОМАНДУ ЗАБЕРЕТ
  216. WC_             IN A,(GSCOM)
  217.                 RRA
  218.                 JR C,$-3
  219.                 RET
  220.  
  221. ;УСТАНОВЩИК ДРАЙВЕРА НА NeoGS
  222. INSTSDD         LD A,0X80
  223.                 OUT (GSCTR),A                   ;ПОЛНЫЙ СБРОС NEOGS
  224.                 EI
  225.                 HALT
  226.                 EI
  227.                 HALT
  228.                 EI
  229.                 HALT
  230.                 DI
  231.                 LD A,0XF3
  232.                 OUT (GSCOM),A
  233.                 LD B,0X30
  234. ISDD1           EI
  235.                 HALT
  236.                 DI
  237.                 DEC B
  238.                 JR Z,SD_NO
  239.                 IN A,(GSCOM)
  240.                 RRA
  241.                 JR C,ISDD1
  242.                 LD BC,GSDAT
  243.                 IN A,(C)
  244.                 LD DE,0X0300
  245.                 LD HL,SETUPSD
  246.                 OUT (C),E
  247.                 LD A,0X14
  248.                 OUT (GSCOM),A
  249.                 CALL WC_
  250.                 OUT (C),D
  251.                 CALL WD_
  252.                 OUT (C),L
  253.                 CALL WD_
  254.                 OUT (C),H
  255.                 CALL WD_
  256.                 LD HL,UKLAD1
  257. ISDD3           OUTI
  258.                 CALL WD_
  259.                 DEC DE
  260.                 LD A,D
  261.                 OR E
  262.                 JR NZ,ISDD3
  263.                 LD HL,SETUPSD
  264.                 OUT (C),L
  265.                 LD A,0X13
  266.                 OUT (GSCOM),A
  267.                 CALL WC_
  268.                 OUT (C),H
  269.                 EI
  270.                 HALT
  271.                 EI
  272.                 HALT
  273.                 DI
  274.                 LD B,3
  275.                 IN A,(GSDAT)
  276.                 DEC B
  277.                 JP Z,SD_NO
  278.                 CP 0X77
  279.                 JP NZ,SD_NO
  280.                 XOR A
  281.                 RET
  282.  
  283. UKLAD1  ;ОТКУДА КОД НА НГС ЗАКИДЫВАТЬ
  284.  
  285.                 PHASE SETUPSD
  286.  
  287. ;САМ УСТАНОВЩИК ДРАЙВЕРА ДЛЯ NeoGS
  288.                 DI
  289.                 LD A,0X9C
  290.                 OUT (SCTRL),A           ;КОНФИГУРАТОР NeoGS
  291.                 CALL AVTODET
  292.                 AND A
  293.                 LD A,0X77               ;0X77-NeoGS НАЙДЕН
  294.                 JR Z,$+4
  295.                 LD A,0XCC               ;0XCC-НАЙДЕН OLDGS
  296.                 OUT (ZXDATWR),A
  297.                 OUT (CLRCBIT),A
  298.                 JP NZ,COMINT_
  299.                 DI
  300.                 IN A,(GSCFG0)
  301.                 RES B_RAMRO,A
  302.                 OUT (GSCFG0),A
  303.                 LD HL,0X1D00
  304.                 LD (0X0300+(0X1E*2)),HL
  305.                 LD DE,UKLAD2
  306.                 LD BC,GSDDRVE-GSDDRV
  307.                 EX DE,HL
  308.                 LDIR
  309.                 IN A,(GSCFG0)
  310.                 SET B_RAMRO,A
  311.                 OUT (GSCFG0),A
  312.                 JP COMINT_
  313.  
  314. ;ПРОВЕРКА ЧТО ЭТО NeoGS И ВКЛЮЧЕНИЕ ЧАСТОТЫ 24MHz
  315. AVTODET         IN A,(GSCFG0)
  316.                 AND 0XCF
  317.                 OUT (GSCFG0),A          ;ОБРАТНАЯ ЗАПИСЬ В ПОРТ СО СБРОШЕННЫМИ
  318.                                         ;БИТАМИ 5-4 ВКЛЮЧАЕТ ЧАСТОТУ ПРОЦЕССОРА
  319.                                         ;РАВНЫМ 24 МГц
  320.                 LD D,A
  321.                 IN A,(GSCFG0)
  322.                 CP D
  323.                 LD A,0
  324.                 RET Z
  325.                 DEC A
  326.                 RET
  327.  
  328. UKLAD2  ;ОТКУДА КОД ПЕРЕКИДЫВАТЬ
  329.  
  330.                 DEPHASE
  331.  
  332.                 PHASE 0X1D00
  333.  
  334. ;ОБЩАЯ ТОЧКА ВХОДА ДЛЯ РАБОТЫ С SD КАРТОЙ
  335. GSDDRV          DI
  336.                 IN A,(ZXDATRD)          ;ПРИЕМ КОМАНДЫ ДРАЙВЕРА
  337.                 OUT (CLRCBIT),A         ;СБРОС COMANDBIT
  338.                 LD HL,COMINT_
  339.                 PUSH HL
  340.                 PUSH IY
  341.                 LD IYH,0X77
  342.                 ADD A,A
  343.                 LD E,A
  344.                 LD D,0
  345.                 LD HL,TABLSDG
  346.                 ADD HL,DE
  347.                 LD E,(HL)
  348.                 INC HL
  349.                 LD D,(HL)
  350.                 EX DE,HL
  351.                 CALL WDY
  352.                 IN A,(ZXDATRD)          ;ПРИЕМ БИТОВ 31-24 ПАРАМЕТРА
  353.                 LD B,A
  354.                 CALL WDY
  355.                 IN A,(ZXDATRD)          ;ПРИЕМ БИТОВ 23-16 ПАРАМЕТРА
  356.                 LD C,A
  357.                 CALL WDY
  358.                 IN A,(ZXDATRD)          ;ПРИЕМ БИТОВ 15-8 ПАРАМЕТРА
  359.                 LD D,A
  360.                 CALL WDY
  361.                 IN A,(ZXDATRD)          ;ПРИЕМ БИТОВ 7-0 ПАРАМЕТРА
  362.                 LD E,A
  363.                 CALL WDY
  364.                 IN A,(ZXDATRD)          ;ПРИЕМ КОЛ-ВО СЕКТОРОВ
  365.                 JP (HL)
  366.  
  367. TABLSDG         DW SDINITG              ;0 ПАРАМЕТРОВ НЕ ТРЕБУЕТ, НА ВЫХОДЕ A
  368.                                         ;СМОТРИ ВЫШЕ ПЕРВЫЕ 2 ЗНАЧЕНИЯ
  369.                 DW SDCMPG               ;1 ПРОВЕРКА НАЛИЧИЯ SD КАРТЫ
  370.                 DW RDMULG               ;2 ЧИТАТЬ "A" СЕКТОРОВ
  371.                 DW WRMULG               ;3 ПИСАТЬ "A" СЕКТОРОВ
  372.  
  373. SDCMPG          LD A,CMD_58
  374.                 LD BC,SD_RSTR
  375.                 CALL OUT_COG
  376.                 CALL INOOUTG
  377.                 IN A,(C)
  378.                 NOP
  379.                 IN H,(C)
  380.                 NOP
  381.                 IN H,(C)
  382.                 NOP
  383.                 IN H,(C)
  384.                 INC A
  385.                 JP NZ,OK_WORK
  386.                 LD IYH,0X88                     ;КАРТА НЕ ПРОШЛА ПРОВЕРКУ НА НАЛИЧИЕ
  387.                 JP OK_WORK
  388.  
  389. ZAW003G         LD IYH,0XEE                     ;КАРТА НЕОБНАРУЖЕНА
  390.                 JP OK_WORK
  391.  
  392. SDINITG         CALL CSHIGHG
  393.                 LD BC,SD_SEND
  394.                 LD DE,0X20FF
  395.                 OUT (C),E
  396.                 DEC D
  397.                 JR NZ,$-3
  398.                 LD BC,SD_RSTR
  399.                 XOR A
  400.                 EX AF,AF'
  401. ZAW001G         LD HL,CMD00G
  402.                 CALL OUTCOMG
  403.                 CALL INOOUTG
  404.                 EX AF,AF'
  405.                 DEC A
  406.                 JR Z,ZAW003G
  407.                 EX AF,AF'
  408.                 DEC A
  409.                 JR NZ,ZAW001G
  410.                 LD HL,CMD08G
  411.                 CALL OUTCOMG
  412.                 CALL INOOUTG
  413.                 IN H,(C)
  414.                 NOP
  415.                 IN H,(C)
  416.                 NOP
  417.                 IN H,(C)
  418.                 NOP
  419.                 IN H,(C)
  420.                 LD HL,0
  421.                 BIT 2,A
  422.                 JR NZ,ZAW006G
  423.                 LD H,0X40
  424. ZAW006G         LD A,CMD_55
  425.                 CALL OUT_COG
  426.                 CALL INOOUTG
  427.                 LD BC,SD_SEND
  428.                 LD A,ACMD_41
  429.                 OUT (C),A
  430.                 NOP
  431.                 OUT (C),H
  432.                 NOP
  433.                 OUT (C),L
  434.                 NOP
  435.                 OUT (C),L
  436.                 NOP
  437.                 OUT (C),L
  438.                 LD A,0XFF
  439.                 OUT (C),A
  440.                 CALL INOOUTG
  441.                 AND A
  442.                 JR NZ,ZAW006G
  443. ZAW004G         LD A,CMD_59
  444.                 CALL OUT_COG
  445.                 CALL INOOUTG
  446.                 AND A
  447.                 JR NZ,ZAW004G
  448. ZAW005G         LD HL,CMD16G
  449.                 CALL OUTCOMG
  450.                 CALL INOOUTG
  451.                 AND A
  452.                 JR NZ,ZAW005G
  453.                 JP OK_WORK
  454.  
  455. CSHIGHG         PUSH AF
  456.                 LD A,M_SDNCS+M_SNCLR    ;0X81
  457.                 OUT (SCTRL),A
  458.                 POP AF
  459.                 RET
  460.  
  461. CSLOWG          PUSH AF
  462.                 LD A,M_SDNCS            ;1
  463.                 OUT (SCTRL),A
  464.                 POP AF
  465.                 RET
  466.  
  467. OUTCOMG         CALL CSLOWG
  468.                 PUSH BC
  469.                 LD BC,0X0600+SD_SEND
  470.                 OTIR
  471.                 POP BC
  472.                 RET
  473.  
  474. OUT_COG         PUSH BC
  475.                 CALL CSLOWG
  476.                 LD BC,SD_SEND
  477.                 OUT (C),A
  478.                 XOR A
  479.                 OUT (C),A
  480.                 NOP
  481.                 OUT (C),A
  482.                 NOP
  483.                 OUT (C),A
  484.                 NOP
  485.                 OUT (C),A
  486.                 DEC A
  487.                 OUT (C),A
  488.                 POP BC
  489.                 RET
  490.  
  491. SECM20G         PUSH HL
  492.                 PUSH DE
  493.                 PUSH BC
  494.                 PUSH AF
  495.                 PUSH BC
  496.                 LD A,CMD_58
  497.                 LD BC,SD_RSTR
  498.                 CALL OUT_COG
  499.                 CALL INOOUTG
  500.                 IN A,(C)
  501.                 NOP
  502.                 IN H,(C)
  503.                 NOP
  504.                 IN H,(C)
  505.                 NOP
  506.                 IN H,(C)
  507.                 INC A
  508.                 JR NZ,SECN20G1
  509.                 LD IYH,0X99                     ;КАРТА ПОТЕРЯЛАСЬ
  510. SECN20G1        DEC A
  511.                 BIT 6,A
  512.                 POP HL
  513.                 JR NZ,SECN20G
  514.                 EX DE,HL
  515.                 ADD HL,HL
  516.                 EX DE,HL
  517.                 ADC HL,HL
  518.                 LD H,L
  519.                 LD L,D
  520.                 LD D,E
  521.                 LD E,0
  522. SECN20G         POP AF
  523.                 LD BC,SD_SEND
  524.                 OUT (C),A
  525.                 NOP
  526.                 OUT (C),H
  527.                 NOP
  528.                 OUT (C),L
  529.                 NOP
  530.                 OUT (C),D
  531.                 NOP
  532.                 OUT (C),E
  533.                 LD A,0XFF
  534.                 OUT (C),A
  535.                 POP BC
  536.                 POP DE
  537.                 POP HL
  538.                 RET
  539.  
  540. INOOUTG         PUSH DE
  541.                 LD DE,0X80FF
  542. INWAITG         IN A,(SD_RSTR)
  543.                 CP E
  544.                 JR NZ,INEXITG
  545.                 DEC D
  546.                 JR NZ,INWAITG
  547. INEXITG         POP DE
  548.                 RET
  549.  
  550. CMD00G          DB 0X40,0X00,0X00,0X00,0X00,0X95        ;GO_IDLE_STATE
  551. CMD08G          DB 0X48,0X00,0X00,0X01,0XAA,0X87        ;SEND_IF_COND
  552. CMD16G          DB 0X50,0X00,0X00,0X02,0X00,0XFF        ;SET_BLOCKEN
  553.  
  554. ;ПЕРЕДАЧА ОДНОГО СЕКТОРА В SD КАРТУ
  555. WRSECTG         LD BC,SD_SEND
  556.                 OUT (SD_SEND),A
  557.                 IN A,(ZXSTAT)
  558.                 RRA
  559.                 JR NC,$-3
  560.                 OUT (CLRCBIT),A
  561.                 LD HL,0X0200
  562. WRSECTG1        CALL WDY
  563.                 IN A,(ZXDATRD)
  564.                 DEC HL
  565.                 OUT (C),A
  566.                 LD A,H
  567.                 OR L
  568.                 JR NZ,WRSECTG1
  569.                 LD A,0XFF
  570.                 OUT (C),A
  571.                 NOP
  572.                 OUT (C),A
  573.                 RET
  574.  
  575. ;ПЕРЕДАЧА ОДНОГО СЕКТОРА НА СПЕК
  576. RDSECTG         IN A,(ZXSTAT)
  577.                 RRA
  578.                 JR NC,$-3
  579.                 OUT (CLRCBIT),A
  580.                 LD BC,SD_RSTR
  581.                 LD HL,0X0200
  582. RDSECTG1        IN A,(C)
  583.                 DEC HL
  584.                 OUT (ZXDATWR),A
  585.                 CALL WDN
  586.                 LD A,H
  587.                 OR L
  588.                 JR NZ,RDSECTG1
  589.                 IN A,(C)
  590.                 NOP
  591.                 IN A,(C)
  592.                 RET
  593.  
  594. ;ЗАПИСЬ "A" СЕКТОРОВ
  595. WRMULG          EX AF,AF'
  596.                 LD A,CMD_25
  597.                 CALL SECM20G
  598.                 LD A,IYH
  599.                 CP 0X99
  600.                 JR Z,ERR_WR_LOST
  601. WRMULG3         CALL INOOUTG
  602.                 INC A
  603.                 JR NZ,WRMULG3
  604.                 EX AF,AF'
  605. WRMULG1         EX AF,AF'
  606.                 LD A,0XFC
  607.                 CALL WRSECTG
  608. WRMULG2         CALL INOOUTG
  609.                 INC A
  610.                 JR NZ,WRMULG2
  611.                 EX AF,AF'
  612.                 DEC A
  613.                 JR NZ,WRMULG1
  614.                 LD C,SD_SEND
  615.                 LD A,0XFD
  616.                 OUT (C),A
  617.                 CALL INOOUTG
  618.                 INC A
  619.                 JR NZ,$-4
  620.                 JR OK_WORK
  621.  
  622. ERR_WR_LOST     LD BC,SD_SEND
  623.                 OUT (SD_SEND),A
  624.                 IN A,(ZXSTAT)
  625.                 RRA
  626.                 JR NC,$-3
  627.                 OUT (CLRCBIT),A
  628.                 LD HL,0X0200
  629. ERRWRLOST1      CALL WDY
  630.                 IN A,(ZXDATRD)
  631.                 DEC HL
  632.                 LD A,H
  633.                 OR L
  634.                 JR NZ,ERRWRLOST1
  635.                 JP OK_WORK
  636.  
  637. ERR_RD_LOST     IN A,(ZXSTAT)
  638.                 RRA
  639.                 JR NC,$-3
  640.                 OUT (CLRCBIT),A
  641.                 LD BC,SD_RSTR
  642.                 LD HL,0X0200
  643. ERRRDLOST1      XOR A
  644.                 OUT (ZXDATWR),A
  645.                 CALL WDN
  646.                 DEC HL
  647.                 LD A,H
  648.                 OR L
  649.                 JR NZ,ERRRDLOST1
  650.                 JP OK_WORK
  651.  
  652. ;ЗАГРУЗКА "A" СЕКТОРОВ
  653. RDMULG          EX AF,AF'
  654.                 LD A,CMD_18
  655.                 CALL SECM20G
  656.                 LD A,IYH
  657.                 CP 0X99
  658.                 JR Z,ERR_RD_LOST
  659.                 EX AF,AF'
  660. RDMULG1         EX AF,AF'
  661.                 CALL INOOUTG
  662.                 CP 0XFE
  663.                 JR NZ,$-5
  664. RDMULG5         CALL RDSECTG
  665.                 EX AF,AF'
  666.                 DEC A
  667.                 JR NZ,RDMULG1
  668.                 LD A,CMD_12
  669.                 CALL OUT_COG
  670. RDMULG3         CALL INOOUTG
  671.                 INC A
  672.                 JR NZ,RDMULG3
  673.  
  674. OK_WORK         CALL CSHIGHG
  675.                 LD A,IYH
  676.                 POP IY
  677.  
  678. OUTSTAT         OUT (ZXDATWR),A
  679.  
  680. ;ОЖИДАНИЕ КОГДА СПЕК ЗАБЕРЕТ БАЙТ ДАННЫХ
  681. WDN             IN A,(ZXSTAT)
  682.                 RLA
  683.                 JR C,$-3
  684.                 RET
  685.  
  686. ;ОЖИДАНИЕ КОГДА СПЕК ДАСТ БАЙТ ДАННЫХ
  687. WDY             IN A,(ZXSTAT)
  688.                 RLA
  689.                 JR NC,$-3
  690.                 RET
  691. GSDDRVE
  692.                 DEPHASE
  693.