home *** CD-ROM | disk | FTP | other *** search
/ The C Users' Group Library 1994 August / wc-cdrom-cusersgrouplibrary-1994-08.iso / vol_100 / 192_01 / sectora.a < prev    next >
Text File  |  1979-12-31  |  2KB  |  59 lines

  1.           DSEG
  2. GETMSG    DB     '** Error reading diskette! ',13,10,0
  3. PUTMSG    DB     '** Error writing diskette! ',13,10,0
  4.           CSEG
  5.           PUBLIC GETSECT_,PUTSECT_,PRINTF_,EXIT_
  6. ; GETSECT - READS A SECTOR FROM DISKETTE.  CALL SEQUENCE IS:
  7. ;     getsect(buf,drv,sect) where 
  8. ;       buf = buffer address of 512 bytes where data will be placed
  9. ;       drv = DOS drive number
  10. ;       sect = logical sector number
  11. ;
  12. GETSECT_: PUSH   BP
  13.           MOV    BP,SP
  14.           MOV    CX,1       ; READ 1 SECTOR
  15.           MOV    BX,[BP+4]  ; BUFFER ADDRESS
  16.           MOV    AX,[BP+6]  ; DRIVE NUMBER
  17.           MOV    DX,[BP+8]  ; SECTOR NUMBER
  18.           INT    25H        ; DO THE READ
  19.           POP    AX         ; RESTORE STACK DUE TO FLAGS
  20.           JNC    GETOK      ; CHECK FOR READ ERROR
  21.           MOV    AX,OFFSET GETMSG
  22.           PUSH   AX
  23.           CALL   PRINTF_
  24.           POP    AX
  25.           CALL   EXIT_
  26.           JNC    GETOK      ; CHECK FOR READ ERROR
  27.           MOV    AX,OFFSET GETMSG
  28.           PUSH   AX
  29.           CALL   PRINTF_
  30.           POP    AX
  31.           CALL   EXIT_
  32. GETOK:    POP    BP
  33.           RET
  34. ;
  35. ; PUTSECT - WRITES A SECTOR TO DISKETTE.  CALL SEQUENCE IS:
  36. ;     putsect(buf,drv,sect) where 
  37. ;       buf = buffer address of 512 bytes to be written
  38. ;       drv = DOS drive number
  39. ;       sect = logical sector number
  40. ;
  41. PUTSECT_: PUSH   BP
  42.           MOV    BP,SP
  43.           MOV    CX,1       ; WRITE 1 SECTOR
  44.           MOV    BX,[BP+4]  ; BUFFER ADDRESS
  45.           MOV    AX,[BP+6]  ; DRIVE NUMBER
  46.           MOV    DX,[BP+8]  ; SECTOR NUMBER
  47.           INT    26H        ; DO THE WRITE
  48.           POP    AX         ; RESTORE STACK DUE TO FLAGS
  49.           JNC    PUTOK      ; CHECK FOR READ ERROR
  50.           MOV    AX,OFFSET PUTMSG
  51.           PUSH   AX
  52.           CALL   PRINTF_
  53.           POP    AX
  54.           CALL   EXIT_
  55. PUTOK:    POP    BP
  56.           RET
  57.           END
  58.  
  59.