Subversion Repositories pentevo

Rev

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

  1.  
  2. ;LAST UPDATE: 27.02.2021 savelij
  3.  
  4. VIEW_CHS        EQU 1
  5.  
  6. HDD_DETECTOR    LD IX,.HDDDETECT
  7.                 RST8 _WINW
  8.                 LD HL,ADR_CAT
  9.                 RST8 _COM_DEV,_COMHDDN,_DEV_INIT
  10.                 LD A,H
  11.                 AND A
  12.                 JR Z,.MASTER_FOUND
  13.                 DEC A
  14.                 CALL Z,.CDDVDFOUNDM
  15.                 JR Z,.SLAVE
  16.                 PUSH HL
  17.                 LD HL,.MASTERNONE
  18.                 RST8 _PRINT_MESSAGE
  19.                 POP HL
  20.                 JR .SLAVE
  21.  
  22. .MASTER_FOUND   LD C,1
  23.                 CALL .HDD_INFO
  24. .SLAVE          LD A,L
  25.                 AND A
  26.                 JR Z,.SLAVE_FOUND
  27.                 DEC A
  28.                 CALL Z,.CDDVDFOUNDS
  29.                 JP Z,.ENDTEST
  30.                 LD HL,.SLAVENONE
  31.                 RST8 _PRINT_MESSAGE
  32.                 JR .ENDTEST
  33.  
  34. .SLAVE_FOUND    LD C,2
  35.                 CALL .HDD_INFO
  36. .ENDTEST        LD HL,.TXTANYKEY
  37.                 RST8 _PRINT_MESSAGE
  38. .WAITENTER      EI
  39.                 HALT
  40.                 BIT 5,(IY+1)
  41.                 JR Z,.WAITENTER
  42.                 LD A,(LAST_K)
  43.                 CP 0X0D
  44.                 JR NZ,.WAITENTER
  45.                 JP RESTART
  46.  
  47. .HDD_INFO       PUSH HL
  48.                 DEC C
  49.                 LD HL,.MASTERFOUND
  50.                 JR Z,.HDDI1
  51.                 LD HL,.SLAVEFOUND
  52. .HDDI1          RST8 _PRINT_MESSAGE
  53.                 LD A,C
  54.                 EX AF,AF'
  55.                 LD HL,ADR_CAT
  56.                 RST8 _COM_DEV,_COMHDDN,_DEV_READID
  57.                 LD HL,ADR_CAT+46
  58.                 PUSH HL
  59.                 LD B,0X18
  60. .MF01           LD A,(HL)
  61.                 INC HL
  62.                 LD E,(HL)
  63.                 DEC HL
  64.                 LD (HL),E
  65.                 INC HL
  66.                 LD (HL),A
  67.                 INC HL
  68.                 DJNZ .MF01
  69.                 LD HL,ADR_CAT+46+42
  70.         IF VIEW_CHS
  71.                 LD (HL),"\r"
  72.                 INC HL
  73.         ENDIF
  74.                 LD (HL),0
  75.                 POP HL
  76.                 RST8 _PRINT_MESSAGE             ;имя винта
  77.         IF VIEW_CHS
  78.                 LD HL,.CHS
  79.                 RST8 _PRINT_MESSAGE
  80.                 LD HL,ADR_CAT+0X200
  81.                 LD DE,(ADR_CAT + 1 * WORD)      ;количество цилиндров
  82.                 RST8 _MATH,_HEX2DECTXT
  83.                 RST8 _PRINT_MESSAGE
  84.                 LD A,"/"
  85.                 RST8 _PRINT_A
  86.                 LD DE,(ADR_CAT + 3 * WORD)      ;количество головок
  87.                 RST8 _MATH,_HEX1DECTXT
  88.                 RST8 _PRINT_MESSAGE
  89.                 LD A,"/"
  90.                 RST8 _PRINT_A
  91.                 LD DE,(ADR_CAT + 6 * WORD)      ;количество секторов
  92.                 RST8 _MATH,_HEX1DECTXT
  93.                 RST8 _PRINT_MESSAGE
  94.         ENDIF
  95.                 LD HL,.TXTSIZE
  96.                 RST8 _PRINT_MESSAGE
  97.                 LD IXL,0                        ; текст "MB"
  98. ;               LD HL,.NEWLINE
  99. ;               RST8 _PRINT_MESSAGE
  100. ; проверка бита поддержки LBA48
  101.                 LD HL,(ADR_CAT + 83 * WORD)
  102.                 LD A,H
  103.                 AND %00000100                   ; бит 10 в слове 83
  104.                 JR Z,.LBA28
  105. ; для LBA48
  106. .LBA48
  107.                 LD HL,(ADR_CAT + 100 * WORD + 1); размер в секторах /256
  108.                 LD DE,(ADR_CAT + 101 * WORD + 1)
  109.                 LD BC,(ADR_CAT + 102 * WORD + 1)
  110.                 LD B,3
  111.                 CALL .DIV_LBA
  112.                 LD A,C
  113.                 AND A
  114.                 JR Z,.L3
  115.                 LD IXL,1                        ; текст "GB"
  116.                 LD B,2
  117.                 LD L,H
  118.                 LD H,E
  119.                 LD E,D
  120.                 LD D,C
  121.                 LD C,0
  122.                 CALL .DIV_LBA
  123.                 JR .L3
  124.  
  125. ; для LBA28
  126. .LBA28
  127.                 LD HL,(ADR_CAT + 60 * WORD + 1)
  128.                 LD DE,(ADR_CAT + 61 * WORD + 1) ; размер в LBA секторах
  129.                 LD BC,3 << 8 + 0
  130.                 CALL .DIV_LBA
  131. .L3             LD B,D
  132.                 LD C,E
  133.                 EX DE,HL
  134.                 LD HL,ADR_CAT+0X200
  135.                 RST8 _MATH,_HEX4DECTXT
  136.                 RST8 _PRINT_MESSAGE
  137.                 LD A,IXL
  138.                 AND A
  139.                 LD HL,.TXTMB
  140.                 JR Z,.L4
  141.                 LD HL,.TXTGB
  142. .L4             RST8 _PRINT_MESSAGE
  143.                 POP HL
  144.                 RET
  145.  
  146. .DIV_LBA
  147. .L1             SRL C
  148.                 RR D
  149.                 RR E
  150.                 RR H
  151.                 RR L
  152.                 DJNZ .L1
  153.                 RET
  154.  
  155. .CDDVDFOUNDS    PUSH HL
  156.                 LD HL,.SLAVECDDVD
  157.                 JR .CDDVDFOUND
  158.  
  159. .CDDVDFOUNDM    PUSH HL
  160.                 LD HL,.MASTERCDDVD
  161. .CDDVDFOUND     PUSH AF
  162.                 RST8 _PRINT_MESSAGE
  163.                 POP AF
  164.                 POP HL
  165.                 RET
  166.  
  167. .HDDDETECT      DB 0,0,24,32,0X07,0X1F,%01010000,0
  168.                 DW 0,0,.TXTHDDDET,0,0,0
  169.  
  170. .TXTHDDDET      DB "\1\x17\XFF\3HDD detector\r\0"
  171.  
  172. .TXTSIZE        DB "\rSize:\0"
  173. .TXTMB          DB " MB\r\0"
  174. .TXTGB          DB " GB\r\0"
  175. .MASTERFOUND    DB "\rHDD master found\r\0"
  176. .SLAVEFOUND     DB "\rHDD slave found\r\0"
  177. .MASTERNONE     DB "\rHDD master not found\r\0"
  178. .SLAVENONE      DB "\rHDD slave not found\r\0"
  179. .MASTERCDDVD    DB "\rCD/DVD-ROM master found\r\0"
  180. .SLAVECDDVD     DB "\rCD/DVD-ROM slave found\r\0"
  181. .CHS            DB "C/H/S: \0"
  182. .NEWLINE        DB "\r\0"
  183. .TXTANYKEY      DB "\x16\x17\0\3Press ENTER to main menu\0"
  184.