Subversion Repositories pentevo

Rev

Rev 736 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?

  1.  
  2. ; LAST UPDATE: 18.10.2023 savelij
  3.  
  4. ; ДРАЙВЕР ЭЛЕКТРОННОГО ДИСКА
  5.  
  6. ED_DRV  DW      ED_RES
  7.         DW      ED_SEEK
  8.         DW      ED_FRM
  9.         DW      ED_REC
  10.         DW      ED_RD
  11.         DW      ED_NOP
  12.         DW      ED_WR
  13.  
  14. ;-------------------------
  15. ; КОМАНДЫ НЕ ВЫПОЛНЯЮТСЯ
  16. ED_RES:
  17. ED_REC:
  18. ED_NOP
  19. ;       CALL    TST_RT
  20.         XOR     A
  21.         RET
  22.  
  23. ;-------------------------
  24. ED_SEEK: LD     A,(RQCYL)
  25.          LD     (ED_CYL),A
  26.          XOR    A
  27.          RET
  28.  
  29. ;-------------------------
  30. ; ВЫЧИСЛЕНИЕ АДРЕСА
  31. ED_ADR  BIT ED_INI,(IX-_TST_IS1)
  32.                 CALL NZ,ED_INIT
  33.                 ld              a,~RAM_RAMDISK
  34.         RST     18H
  35.         EX      AF,AF'
  36.                 ld              hl,(ED_CYL)
  37.                 ld              h,0xc2
  38.                 LD      de,(RQSECT)      
  39.                 inc e
  40.                 ld d,0
  41.                 ld b,126
  42. ED_ADR_LOOP:
  43.                 ld a,(hl)
  44.                 cp e
  45.                 jr z,ED_ADR_END
  46.                 inc h
  47.                 ld a,(hl)
  48.                 add a,d
  49.                 ld d,a
  50.                 inc h
  51.                 djnz ED_ADR_LOOP
  52.        EX      AF,AF'
  53.                 rst 0x18
  54.                 JR ED_ERRA1
  55. ED_ADR_END:    
  56.                 ld e,0
  57.                 srl d
  58.                 rr e
  59.                 ld h,0xc0
  60.                 ld a,(hl)
  61.                 add a,d
  62.                 ld d,a
  63.                 inc h
  64.                 ld a,RAM_DATARAMD
  65.                 add a,(hl)
  66.                 set 7,d
  67.                 bit 6,d
  68.                 jr z,ED_ADR_NINC
  69.                 res 6,d
  70.                 inc a
  71. ED_ADR_NINC:
  72.         EX      AF,AF'
  73.                 rst 0x18
  74.        RET
  75.  
  76. ED_INIT:RES     ED_INI,(IX-_TST_IS1)
  77.        XOR     A
  78.        CALL    ED_PG
  79.        RST     18H
  80.        EX      AF,AF'
  81.         LD      A,0E5H
  82.         JP      ED_CLR
  83.  
  84. ;-------------------------
  85. ; ЧТЕНИЕ
  86. ED_LDIR:
  87.                 ld              a,0x06
  88.                 in              a,(0xbe)
  89.         EX      AF,AF'
  90.                 push    bc
  91.                 ld              bc,WIN_P2
  92.                 out     (c),a
  93.                 pop     bc
  94.                 ldir
  95.        EX      AF,AF'
  96.                 ld              bc,WIN_P2
  97.                 out     (c),a
  98.                 ret
  99. ;-------------------------
  100. ;
  101. ED_RD:  CALL    ED_ADR          ; COPY FROM HL ...
  102.         EX      DE,HL
  103.         LD      BC,256
  104.         LD      DE,(DCBUF)      ; ... TO DE 128 BYTE
  105.                 call    ED_LDIR
  106.         EI
  107.         XOR     A
  108.         RET
  109.  
  110. ED_ERRA1: POP   AF
  111. ED_ERRA:LD      A,_ADRERR
  112.         RET
  113.  
  114. ;------------------------
  115. ; ЗАПИСЬ
  116. ED_WR:  CALL    ED_ADR          ; COPY TO HL ...
  117.         LD      BC,256
  118.         LD      HL,(DCBUF)    
  119.                 call    ED_LDIR
  120.         EI
  121.         XOR     A
  122.         RET
  123.  
  124. ;----------------------------
  125. ; FORMAT
  126. ED_FRM: LD      A,(RQCYL)
  127.         DEC     A
  128.                 JP              M,ED_ERRA
  129.         CALL    ED_PG
  130.         RST     18H
  131.         EX      AF,AF'
  132.        LD      A,(RQBLN)
  133. ED_CLR  LD      HL,0C000H
  134.        LD      DE,0C001H
  135.        LD      BC,03FFFH
  136.        LD      (HL),A
  137.        LDIR
  138.        EX      AF,AF'
  139.         RST     18H
  140.         EI
  141.         XOR     A
  142.         RET
  143.