home *** CD-ROM | disk | FTP | other *** search
/ BBS 1 / BBS#1.iso / for-dos / mbrhack.arj / READMBR.ASM < prev    next >
Encoding:
Assembly Source File  |  1995-03-03  |  2.9 KB  |  147 lines

  1. .model    tiny
  2.  
  3. SECTCOUNT EQU 1
  4. SECTNUM   EQU 1
  5. ON     EQU 1
  6. OFF      EQU 0
  7.  
  8. ; PORT  CONTENTS (write value)
  9. ;==========================================
  10. ; 1F0  Data Register
  11. ; 1F1  Error register (write pre comp reg)
  12. ; 1F2  Sector count
  13. ; 1F3  Sector number
  14. ; 1F4  Cylinder low
  15. ; 1F5  Cylinder high
  16. ; 1F6  SDH register
  17. ; 1F7  Status register (command register)
  18. ;
  19. ; 3F6  Alt. Status reg (Dig Output register)
  20. ; 3F7  Drive addr reg.
  21. ;
  22. ;
  23. ;COMMAND      CODE 1F2(SC) 1F3(SN) 1F4-5(CY) 1F6(SDH)
  24. ;===================================================
  25. ;Recalibrate   10     n       n         n       d
  26. ;Read Sec(s)   20     y       y         y       y
  27. ;Write Sec(s)  30     y       y         y       y
  28. ;Verify Sec(s) 40     y       y         y       y
  29. ;Format track  50     n       n         y       y
  30. ;Seek          70     n       n         y       y
  31. ;Diagnostic    90     n       n         n       d
  32. ;Init Param    91     n       n         n       d
  33. ;Read Mult     C4     y       y         y       y
  34. ;Write Mult    C5     y       y         y       y
  35. ;Set Mult      C6     y       n         n       d
  36. ;Read Sec Buf  E4     n       n         n       d
  37. ;Write Sec Buf E8     n       n         n       d
  38. ;Identify Drv  EC     n       n         n       d
  39. ;Set Buf Mode  EF     n       n         n       d
  40. ;
  41. ;
  42. ;1F1 is not used in a CONNER drive
  43. ;
  44. ;
  45. ; Normal jumpers:
  46. ;  ACT and C/D
  47. ;
  48. ; Two drive system:
  49. ; Drive C:  C/D    DSP
  50. ; Drive D:  None
  51. ;
  52. ;
  53. .code
  54. even
  55. ;
  56. org    100h
  57. START:
  58.     push CS
  59.     pop  DS
  60.     CLD
  61. ;
  62.     MOV DX,3F6H
  63.     XOR AL,AL
  64.     OUT DX,AL    ;Turn off IRQ 14
  65. ;
  66.     CALL WAITHD
  67. ;
  68.     MOV DX,1F6H
  69.     MOV AL,0A0H    ;Drive descriptor
  70.     OUT DX,AL
  71. ;
  72.         MOV DX,1F2H
  73.         MOV AL,SECTCOUNT
  74.         OUT DX,AL
  75. ;
  76.         MOV DX,1F3H
  77.         MOV AL,SECTNUM
  78.         OUT DX,AL
  79.  
  80.         MOV DX,1F4H; LOW
  81.         MOV AL,OFF
  82.         OUT DX,AL
  83.         MOV DX,1F5H ; HIGH
  84.         MOV AL,OFF
  85.         OUT DX,AL
  86.  
  87.         MOV DX,1F7H
  88.         MOV AL,020H     ;READSECT
  89.     OUT DX,AL
  90. ;
  91. GWORD:    MOV DX,1F7H
  92.     IN AL,DX
  93.     TEST AL,8    ;Wait for data
  94.     JZ GWORD
  95. ;
  96.     MOV CX,256
  97.     MOV DI,OFFSET BUFFER
  98.     MOV DX,1F0H    ;Get data
  99. GLOOP:    IN AX,DX
  100.     STOSW
  101.     LOOP GLOOP
  102. ;
  103.     CALL WAITHD
  104. ;
  105.     MOV DX,3F6H    ;Turn on IRQ 14 and exit
  106.     MOV AL,2
  107.     OUT DX,AL
  108.  
  109.     MOV    AH,3CH         ; CREATE FILE
  110.     MOV    CX,20H
  111.     MOV    DX,OFFSET NAMEF
  112.     INT    21H
  113.  
  114.         MOV     DX,OFFSET NAMEF ; OPEN FILE
  115.         MOV     AH,3DH
  116.         MOV     AL,1
  117.         INT     21H
  118.         MOV     HANDLE,AX
  119.  
  120.         MOV     BX,HANDLE ; WRITE TO FILE
  121.         MOV     AH,40H
  122.         MOV     CX,512
  123.         MOV     DX,OFFSET BUFFER
  124.         INT     21H
  125.  
  126.         MOV     BX,HANDLE ; CLOSE FILE
  127.         MOV     AH,3EH
  128.         INT     21H
  129.  
  130.         MOV    AX,4C00H
  131.     INT    21H
  132. ;
  133. ; Wait till not busy
  134. ;
  135. WAITHD:    MOV DX,1F7H
  136.     IN AL,DX
  137.     TEST AL,128
  138.     JNZ WAITHD
  139.     RET
  140.  
  141. HANDLE  DW 0
  142. NAMEF   DB 'OUT.DAT',0
  143. BUFFER    DW 0
  144.  
  145. ;
  146.     END START
  147.