Subversion Repositories pentevo

Rev

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

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