Subversion Repositories ngs

Rev

Blame | Last modification | View Log | Download | RSS feed | ?url?

  1.  
  2. ;LAST UPDATE: 11.10.2012 savelij
  3.  
  4. ;ОБЩАЯ ТОЧКА ВХОДА ДЛЯ РАБОТЫ С SD КАРТОЙ
  5. GSDDRV          DI
  6.                 IN A,(ZXDATRD)          ;ПРИЕМ КОМАНДЫ ДРАЙВЕРА
  7.                 OUT (CLRCBIT),A         ;СБРОС COMANDBIT
  8.                 LD HL,COMINT_
  9.                 PUSH HL
  10.                 ADD A,A
  11.                 LD E,A
  12.                 LD D,0
  13.                 LD HL,TABLSDG
  14.                 ADD HL,DE
  15.                 LD E,(HL)
  16.                 INC HL
  17.                 LD D,(HL)
  18.                 EX DE,HL
  19.                 CALL WDY
  20.                 IN A,(ZXDATRD)          ;ПРИЕМ БИТОВ 31-24 ПАРАМЕТРА
  21.                 LD B,A
  22.                 CALL WDY
  23.                 IN A,(ZXDATRD)          ;ПРИЕМ БИТОВ 23-16 ПАРАМЕТРА
  24.                 LD C,A
  25.                 CALL WDY
  26.                 IN A,(ZXDATRD)          ;ПРИЕМ БИТОВ 15-8 ПАРАМЕТРА
  27.                 LD D,A
  28.                 CALL WDY
  29.                 IN A,(ZXDATRD)          ;ПРИЕМ БИТОВ 7-0 ПАРАМЕТРА
  30.                 LD E,A
  31.                 CALL WDY
  32.                 IN A,(ZXDATRD)          ;ПРИЕМ КОЛ-ВО СЕКТОРОВ
  33.                 JP (HL)
  34.  
  35. TABLSDG         DW SDINITG              ;0 ПАРАМЕТРОВ НЕ ТРЕБУЕТ, НА ВЫХОДЕ A
  36.                                         ;СМОТРИ ВЫШЕ ПЕРВЫЕ 2 ЗНАЧЕНИЯ
  37.                 DW SDCMPG               ;1 ПРОВЕРКА НАЛИЧИЯ SD КАРТЫ
  38.                 DW RDMULG               ;2 ЧИТАТЬ "A" СЕКТОРОВ
  39.                 DW WRMULG               ;3 ПИСАТЬ "A" СЕКТОРОВ
  40.  
  41. SDCMPG          LD A,CMD_58
  42.                 LD BC,SD_RSTR
  43.                 CALL OUT_COG
  44.                 CALL INOOUTG
  45.                 IN A,(C)
  46.                 NOP
  47.                 IN H,(C)
  48.                 NOP
  49.                 IN H,(C)
  50.                 NOP
  51.                 IN H,(C)
  52.                 INC A
  53.                 JP NZ,OK_WORK
  54. ZAW003G         CALL CSHIGHG
  55.                 LD A,0XEE
  56.                 JP OUTSTAT
  57.  
  58. SDINITG         CALL CSHIGHG
  59.                 LD BC,SD_SEND
  60.                 LD DE,0X20FF
  61.                 OUT (C),E
  62.                 DEC D
  63.                 JR NZ,$-3
  64.                 LD BC,SD_RSTR
  65.                 XOR A
  66.                 EX AF,AF'
  67. ZAW001G         LD HL,CMD00G
  68.                 CALL OUTCOMG
  69.                 CALL INOOUTG
  70.                 EX AF,AF'
  71.                 DEC A
  72.                 JR Z,ZAW003G
  73.                 EX AF,AF'
  74.                 DEC A
  75.                 JR NZ,ZAW001G
  76.                 LD HL,CMD08G
  77.                 CALL OUTCOMG
  78.                 CALL INOOUTG
  79.                 IN H,(C)
  80.                 NOP
  81.                 IN H,(C)
  82.                 NOP
  83.                 IN H,(C)
  84.                 NOP
  85.                 IN H,(C)
  86.                 LD HL,0
  87.                 BIT 2,A
  88.                 JR NZ,ZAW006G
  89.                 LD H,0X40
  90. ZAW006G         LD A,CMD_55
  91.                 CALL OUT_COG
  92.                 CALL INOOUTG
  93.                 LD BC,SD_SEND
  94.                 LD A,ACMD_41
  95.                 OUT (C),A
  96.                 NOP
  97.                 OUT (C),H
  98.                 NOP
  99.                 OUT (C),L
  100.                 NOP
  101.                 OUT (C),L
  102.                 NOP
  103.                 OUT (C),L
  104.                 LD A,0XFF
  105.                 OUT (C),A
  106.                 CALL INOOUTG
  107.                 AND A
  108.                 JR NZ,ZAW006G
  109. ZAW004G         LD A,CMD_59
  110.                 CALL OUT_COG
  111.                 CALL INOOUTG
  112.                 AND A
  113.                 JR NZ,ZAW004G
  114. ZAW005G         LD HL,CMD16G
  115.                 CALL OUTCOMG
  116.                 CALL INOOUTG
  117.                 AND A
  118.                 JR NZ,ZAW005G
  119.                 JP OK_WORK
  120.  
  121. CSHIGHG         PUSH AF
  122.                 LD A,M_SDNCS+M_SNCLR    ;0X81
  123.                 OUT (SCTRL),A
  124.                 POP AF
  125.                 RET
  126.  
  127. CSLOWG          PUSH AF
  128.                 LD A,M_SDNCS            ;1
  129.                 OUT (SCTRL),A
  130.                 POP AF
  131.                 RET
  132.  
  133. OUTCOMG         CALL CSLOWG
  134.                 PUSH BC
  135.                 LD BC,0X0600+SD_SEND
  136.                 OTIR
  137.                 POP BC
  138.                 RET
  139.  
  140. OUT_COG         PUSH BC
  141.                 CALL CSLOWG
  142.                 LD BC,SD_SEND
  143.                 OUT (C),A
  144.                 XOR A
  145.                 OUT (C),A
  146.                 NOP
  147.                 OUT (C),A
  148.                 NOP
  149.                 OUT (C),A
  150.                 NOP
  151.                 OUT (C),A
  152.                 DEC A
  153.                 OUT (C),A
  154.                 POP BC
  155.                 RET
  156.  
  157. SECM20G         PUSH HL
  158.                 PUSH DE
  159.                 PUSH BC
  160.                 PUSH AF
  161.                 PUSH BC
  162.                 LD A,CMD_58
  163.                 LD BC,SD_RSTR
  164.                 CALL OUT_COG
  165.                 CALL INOOUTG
  166.                 IN A,(C)
  167.                 NOP
  168.                 IN H,(C)
  169.                 NOP
  170.                 IN H,(C)
  171.                 NOP
  172.                 IN H,(C)
  173.                 BIT 6,A
  174.                 POP HL
  175.                 JR NZ,SECN20G
  176.                 EX DE,HL
  177.                 ADD HL,HL
  178.                 EX DE,HL
  179.                 ADC HL,HL
  180.                 LD H,L
  181.                 LD L,D
  182.                 LD D,E
  183.                 LD E,0
  184. SECN20G         POP AF
  185.                 LD BC,SD_SEND
  186.                 OUT (C),A
  187.                 NOP
  188.                 OUT (C),H
  189.                 NOP
  190.                 OUT (C),L
  191.                 NOP
  192.                 OUT (C),D
  193.                 NOP
  194.                 OUT (C),E
  195.                 LD A,0XFF
  196.                 OUT (C),A
  197.                 POP BC
  198.                 POP DE
  199.                 POP HL
  200.                 RET
  201.  
  202. INOOUTG         PUSH DE
  203.                 LD DE,0X30FF
  204. INWAITG         IN A,(SD_RSTR)
  205.                 CP E
  206.                 JR NZ,INEXITG
  207.                 DEC D
  208.                 JR NZ,INWAITG
  209. INEXITG         POP DE
  210.                 RET
  211.  
  212. CMD00G          DB 0X40,0X00,0X00,0X00,0X00,0X95        ;GO_IDLE_STATE
  213. CMD08G          DB 0X48,0X00,0X00,0X01,0XAA,0X87        ;SEND_IF_COND
  214. CMD16G          DB 0X50,0X00,0X00,0X02,0X00,0XFF        ;SET_BLOCKEN
  215.  
  216. ;ПЕРЕДАЧА ОДНОГО СЕКТОРА НА СПЕК
  217. RDSECTG         IN A,(ZXSTAT)
  218.                 RRA
  219.                 JR NC,$-3
  220.                 OUT (CLRCBIT),A
  221.                 LD BC,SD_RSTR
  222.                 LD HL,0X0200
  223.                 IN A,(C)
  224.                 DEC HL
  225.                 OUT (ZXDATWR),A
  226.                 CALL WDN
  227.                 LD A,H
  228.                 OR L
  229.                 JR NZ,$-10
  230.                 IN A,(C)
  231.                 NOP
  232.                 IN A,(C)
  233.                 RET
  234.  
  235. ;ПЕРЕДАЧА ОДНОГО СЕКТОРА В SD КАРТУ
  236. WRSECTG         LD BC,SD_SEND
  237.                 OUT (C),A
  238.                 IN A,(ZXSTAT)
  239.                 RRA
  240.                 JR NC,$-3
  241.                 OUT (CLRCBIT),A
  242.                 LD HL,0X0200
  243.                 CALL WDY
  244.                 IN A,(ZXDATRD)
  245.                 DEC HL
  246.                 OUT (C),A
  247.                 LD A,H
  248.                 OR L
  249.                 JR NZ,$-10
  250.                 LD A,0XFF
  251.                 OUT (C),A
  252.                 NOP
  253.                 OUT (C),A
  254.                 RET
  255.  
  256. ;ЗАПИСЬ "A" СЕКТОРОВ
  257. WRMULG          EX AF,AF'
  258.                 LD A,CMD_25
  259.                 CALL SECM20G
  260.                 CALL INOOUTG
  261.                 INC A
  262.                 JR NZ,$-4
  263.                 EX AF,AF'
  264. WRMULG1         EX AF,AF'
  265.                 LD A,0XFC
  266.                 CALL WRSECTG
  267.                 CALL INOOUTG
  268.                 INC A
  269.                 JR NZ,$-4
  270.                 EX AF,AF'
  271.                 DEC A
  272.                 JR NZ,WRMULG1
  273.                 LD C,SD_SEND
  274.                 LD A,0XFD
  275.                 OUT (C),A
  276.                 CALL INOOUTG
  277.                 INC A
  278.                 JR NZ,$-4
  279.                 JR OK_WORK
  280.  
  281. ;ЗАГРУЗКА "A" СЕКТОРОВ
  282. RDMULG          EX AF,AF'
  283.                 LD A,CMD_18
  284.                 CALL SECM20G
  285.                 EX AF,AF'
  286. RDMULG1         EX AF,AF'
  287.                 CALL INOOUTG
  288.                 CP 0XFE
  289.                 JR NZ,$-5
  290.                 CALL RDSECTG
  291.                 EX AF,AF'
  292.                 DEC A
  293.                 JR NZ,RDMULG1
  294.                 LD A,CMD_12
  295.                 CALL OUT_COG
  296.                 CALL INOOUTG
  297.                 INC A
  298.                 JR NZ,$-4
  299.  
  300. OK_WORK         CALL CSHIGHG
  301.                 LD A,0X77
  302.  
  303. OUTSTAT         OUT (ZXDATWR),A
  304.  
  305. ;ОЖИДАНИЕ КОГДА СПЕК ЗАБЕРЕТ БАЙТ ДАННЫХ
  306. WDN             IN A,(ZXSTAT)
  307.                 RLA
  308.                 JR C,$-3
  309.                 RET
  310.  
  311. ;ОЖИДАНИЕ КОГДА СПЕК ДАСТ БАЙТ ДАННЫХ
  312. WDY             IN A,(ZXSTAT)
  313.                 RLA
  314.                 JR NC,$-3
  315.                 RET
  316.