-   
- ;LAST UPDATE: 11.10.2012 savelij 
-   
- ;ОБЩАЯ ТОЧКА ВХОДА ДЛЯ РАБОТЫ С SD КАРТОЙ 
- GSDDRV          DI 
-                 IN A,(ZXDATRD)          ;ПРИЕМ КОМАНДЫ ДРАЙВЕРА 
-                 OUT (CLRCBIT),A         ;СБРОС COMANDBIT 
-                 LD HL,COMINT_ 
-                 PUSH HL 
-                 ADD A,A 
-                 LD E,A 
-                 LD D,0 
-                 LD HL,TABLSDG 
-                 ADD HL,DE 
-                 LD E,(HL) 
-                 INC HL 
-                 LD D,(HL) 
-                 EX DE,HL 
-                 CALL WDY 
-                 IN A,(ZXDATRD)          ;ПРИЕМ БИТОВ 31-24 ПАРАМЕТРА 
-                 LD B,A 
-                 CALL WDY 
-                 IN A,(ZXDATRD)          ;ПРИЕМ БИТОВ 23-16 ПАРАМЕТРА 
-                 LD C,A 
-                 CALL WDY 
-                 IN A,(ZXDATRD)          ;ПРИЕМ БИТОВ 15-8 ПАРАМЕТРА 
-                 LD D,A 
-                 CALL WDY 
-                 IN A,(ZXDATRD)          ;ПРИЕМ БИТОВ 7-0 ПАРАМЕТРА 
-                 LD E,A 
-                 CALL WDY 
-                 IN A,(ZXDATRD)          ;ПРИЕМ КОЛ-ВО СЕКТОРОВ 
-                 JP (HL) 
-   
- TABLSDG         DW SDINITG              ;0 ПАРАМЕТРОВ НЕ ТРЕБУЕТ, НА ВЫХОДЕ A 
-                                         ;СМОТРИ ВЫШЕ ПЕРВЫЕ 2 ЗНАЧЕНИЯ 
-                 DW SDCMPG               ;1 ПРОВЕРКА НАЛИЧИЯ SD КАРТЫ 
-                 DW RDMULG               ;2 ЧИТАТЬ "A" СЕКТОРОВ 
-                 DW WRMULG               ;3 ПИСАТЬ "A" СЕКТОРОВ 
-   
- SDCMPG          LD A,CMD_58 
-                 LD BC,SD_RSTR 
-                 CALL OUT_COG 
-                 CALL INOOUTG 
-                 IN A,(C) 
-                 NOP 
-                 IN H,(C) 
-                 NOP 
-                 IN H,(C) 
-                 NOP 
-                 IN H,(C) 
-                 INC A 
-                 JP NZ,OK_WORK 
- ZAW003G         CALL CSHIGHG 
-                 LD A,0XEE 
-                 JP OUTSTAT 
-   
- SDINITG         CALL CSHIGHG 
-                 LD BC,SD_SEND 
-                 LD DE,0X20FF 
-                 OUT (C),E 
-                 DEC D 
-                 JR NZ,$-3 
-                 LD BC,SD_RSTR 
-                 XOR A 
-                 EX AF,AF' 
- ZAW001G         LD HL,CMD00G 
-                 CALL OUTCOMG 
-                 CALL INOOUTG 
-                 EX AF,AF' 
-                 DEC A 
-                 JR Z,ZAW003G 
-                 EX AF,AF' 
-                 DEC A 
-                 JR NZ,ZAW001G 
-                 LD HL,CMD08G 
-                 CALL OUTCOMG 
-                 CALL INOOUTG 
-                 IN H,(C) 
-                 NOP 
-                 IN H,(C) 
-                 NOP 
-                 IN H,(C) 
-                 NOP 
-                 IN H,(C) 
-                 LD HL,0 
-                 BIT 2,A 
-                 JR NZ,ZAW006G 
-                 LD H,0X40 
- ZAW006G         LD A,CMD_55 
-                 CALL OUT_COG 
-                 CALL INOOUTG 
-                 LD BC,SD_SEND 
-                 LD A,ACMD_41 
-                 OUT (C),A 
-                 NOP 
-                 OUT (C),H 
-                 NOP 
-                 OUT (C),L 
-                 NOP 
-                 OUT (C),L 
-                 NOP 
-                 OUT (C),L 
-                 LD A,0XFF 
-                 OUT (C),A 
-                 CALL INOOUTG 
-                 AND A 
-                 JR NZ,ZAW006G 
- ZAW004G         LD A,CMD_59 
-                 CALL OUT_COG 
-                 CALL INOOUTG 
-                 AND A 
-                 JR NZ,ZAW004G 
- ZAW005G         LD HL,CMD16G 
-                 CALL OUTCOMG 
-                 CALL INOOUTG 
-                 AND A 
-                 JR NZ,ZAW005G 
-                 JP OK_WORK 
-   
- CSHIGHG         PUSH AF 
-                 LD A,M_SDNCS+M_SNCLR    ;0X81 
-                 OUT (SCTRL),A 
-                 POP AF 
-                 RET 
-   
- CSLOWG          PUSH AF 
-                 LD A,M_SDNCS            ;1 
-                 OUT (SCTRL),A 
-                 POP AF 
-                 RET 
-   
- OUTCOMG         CALL CSLOWG 
-                 PUSH BC 
-                 LD BC,0X0600+SD_SEND 
-                 OTIR 
-                 POP BC 
-                 RET 
-   
- OUT_COG         PUSH BC 
-                 CALL CSLOWG 
-                 LD BC,SD_SEND 
-                 OUT (C),A 
-                 XOR A 
-                 OUT (C),A 
-                 NOP 
-                 OUT (C),A 
-                 NOP 
-                 OUT (C),A 
-                 NOP 
-                 OUT (C),A 
-                 DEC A 
-                 OUT (C),A 
-                 POP BC 
-                 RET 
-   
- SECM20G         PUSH HL 
-                 PUSH DE 
-                 PUSH BC 
-                 PUSH AF 
-                 PUSH BC 
-                 LD A,CMD_58 
-                 LD BC,SD_RSTR 
-                 CALL OUT_COG 
-                 CALL INOOUTG 
-                 IN A,(C) 
-                 NOP 
-                 IN H,(C) 
-                 NOP 
-                 IN H,(C) 
-                 NOP 
-                 IN H,(C) 
-                 BIT 6,A 
-                 POP HL 
-                 JR NZ,SECN20G 
-                 EX DE,HL 
-                 ADD HL,HL 
-                 EX DE,HL 
-                 ADC HL,HL 
-                 LD H,L 
-                 LD L,D 
-                 LD D,E 
-                 LD E,0 
- SECN20G         POP AF 
-                 LD BC,SD_SEND 
-                 OUT (C),A 
-                 NOP 
-                 OUT (C),H 
-                 NOP 
-                 OUT (C),L 
-                 NOP 
-                 OUT (C),D 
-                 NOP 
-                 OUT (C),E 
-                 LD A,0XFF 
-                 OUT (C),A 
-                 POP BC 
-                 POP DE 
-                 POP HL 
-                 RET 
-   
- INOOUTG         PUSH DE 
-                 LD DE,0X30FF 
- INWAITG         IN A,(SD_RSTR) 
-                 CP E 
-                 JR NZ,INEXITG 
-                 DEC D 
-                 JR NZ,INWAITG 
- INEXITG         POP DE 
-                 RET 
-   
- CMD00G          DB 0X40,0X00,0X00,0X00,0X00,0X95        ;GO_IDLE_STATE 
- CMD08G          DB 0X48,0X00,0X00,0X01,0XAA,0X87        ;SEND_IF_COND 
- CMD16G          DB 0X50,0X00,0X00,0X02,0X00,0XFF        ;SET_BLOCKEN 
-   
- ;ПЕРЕДАЧА ОДНОГО СЕКТОРА НА СПЕК 
- RDSECTG         IN A,(ZXSTAT) 
-                 RRA 
-                 JR NC,$-3 
-                 OUT (CLRCBIT),A 
-                 LD BC,SD_RSTR 
-                 LD HL,0X0200 
-                 IN A,(C) 
-                 DEC HL 
-                 OUT (ZXDATWR),A 
-                 CALL WDN 
-                 LD A,H 
-                 OR L 
-                 JR NZ,$-10 
-                 IN A,(C) 
-                 NOP 
-                 IN A,(C) 
-                 RET 
-   
- ;ПЕРЕДАЧА ОДНОГО СЕКТОРА В SD КАРТУ 
- WRSECTG         LD BC,SD_SEND 
-                 OUT (C),A 
-                 IN A,(ZXSTAT) 
-                 RRA 
-                 JR NC,$-3 
-                 OUT (CLRCBIT),A 
-                 LD HL,0X0200 
-                 CALL WDY 
-                 IN A,(ZXDATRD) 
-                 DEC HL 
-                 OUT (C),A 
-                 LD A,H 
-                 OR L 
-                 JR NZ,$-10 
-                 LD A,0XFF 
-                 OUT (C),A 
-                 NOP 
-                 OUT (C),A 
-                 RET 
-   
- ;ЗАПИСЬ "A" СЕКТОРОВ 
- WRMULG          EX AF,AF' 
-                 LD A,CMD_25 
-                 CALL SECM20G 
-                 CALL INOOUTG 
-                 INC A 
-                 JR NZ,$-4 
-                 EX AF,AF' 
- WRMULG1         EX AF,AF' 
-                 LD A,0XFC 
-                 CALL WRSECTG 
-                 CALL INOOUTG 
-                 INC A 
-                 JR NZ,$-4 
-                 EX AF,AF' 
-                 DEC A 
-                 JR NZ,WRMULG1 
-                 LD C,SD_SEND 
-                 LD A,0XFD 
-                 OUT (C),A 
-                 CALL INOOUTG 
-                 INC A 
-                 JR NZ,$-4 
-                 JR OK_WORK 
-   
- ;ЗАГРУЗКА "A" СЕКТОРОВ 
- RDMULG          EX AF,AF' 
-                 LD A,CMD_18 
-                 CALL SECM20G 
-                 EX AF,AF' 
- RDMULG1         EX AF,AF' 
-                 CALL INOOUTG 
-                 CP 0XFE 
-                 JR NZ,$-5 
-                 CALL RDSECTG 
-                 EX AF,AF' 
-                 DEC A 
-                 JR NZ,RDMULG1 
-                 LD A,CMD_12 
-                 CALL OUT_COG 
-                 CALL INOOUTG 
-                 INC A 
-                 JR NZ,$-4 
-   
- OK_WORK         CALL CSHIGHG 
-                 LD A,0X77 
-   
- OUTSTAT         OUT (ZXDATWR),A 
-   
- ;ОЖИДАНИЕ КОГДА СПЕК ЗАБЕРЕТ БАЙТ ДАННЫХ 
- WDN             IN A,(ZXSTAT) 
-                 RLA 
-                 JR C,$-3 
-                 RET 
-   
- ;ОЖИДАНИЕ КОГДА СПЕК ДАСТ БАЙТ ДАННЫХ 
- WDY             IN A,(ZXSTAT) 
-                 RLA 
-                 JR NC,$-3 
-                 RET 
-