home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 8 Other / 08-Other.zip / chkchg.zip / chkchg.asm next >
Assembly Source File  |  1993-09-06  |  3KB  |  141 lines

  1. cseg segment
  2.  assume cs:cseg,ds:cseg
  3.  org 100h
  4. start: jmp begin
  5. aesc equ 27
  6. cr equ 13
  7. lf equ 10
  8. minit db 'CHKCHG Copyright (C) 1993 Dimitri Vulis DLV@DM.COM'
  9. mcrlf db cr,lf,'$'
  10. mtest db cr,lf,'Testing, please wait...$'
  11. mread db 'Reading boot sector: $'
  12. mnochg db 'diskette has not been changed, buffers may be reused',cr,lf,'$'
  13. myeschg db 'diskette may have been changed, buffers cannot be reused',cr,lf,'$'
  14. mnotrdy db 'not ready (probably open)',cr,lf,'$'
  15. munexp db 'unexpected error (probably bad diskette)',cr,lf,'$'
  16. mctrl db 'diskette controller failed',cr,lf,'$'
  17. magain db 'Press Enter to test again or ESC to exit...$'
  18. mnoadrm db 'address mark not found',cr,lf,'$'
  19. mnosec db 'sector not found',cr,lf,'$'
  20. mok db 'success',cr,lf,'$'
  21. mseek db 'seek failed',cr,lf,'$'
  22. mcrc db 'data (CRC) error',cr,lf,'$'
  23. mdrive db 'Drive '
  24. drvlet db '?: $'
  25. mtype1 db '5.25", 360K, 40 track',cr,lf,'$'
  26. mtype2 db '5.25", 1.2MB, 80 track',cr,lf,'$'
  27. mtype3 db '3.5", 720K, 80 track',cr,lf,'$'
  28. mtype4 db '3.5", 1.44MB, 80 track',cr,lf,'$'
  29. munktype db 'Unknown type '
  30. mtype db '?',cr,lf,'$'
  31. drv_no db 0
  32. drv_max db 0
  33. begin:
  34.  mov dx,offset minit
  35.  call prt
  36. loop1:
  37.  mov ah,08h
  38.  mov dl,drv_no
  39.  int 13h
  40.  mov drv_max,dl
  41. ;print drive letter
  42.  mov al,drv_no
  43.  add al,'A'
  44.  mov drvlet,al
  45.  mov dx,offset mdrive
  46.  call prt
  47.  mov dx,offset mtype1
  48.  cmp bl,1
  49.  jz prtm
  50.  mov dx,offset mtype2
  51.  cmp bl,2
  52.  jz prtm
  53.  mov dx,offset mtype3
  54.  cmp bl,3
  55.  jz prtm
  56.  mov dx,offset mtype4
  57.  cmp bl,4
  58.  jz prtm
  59.  add bl,'0'
  60.  mov mtype,bl
  61.  mov dx,offset munktype
  62. prtm:
  63.  call prt
  64.  inc drv_no
  65.  mov al,drv_max
  66.  cmp al,drv_no
  67.  jg loop1
  68. test0:
  69.  mov dx,offset mtest
  70.  call prt
  71.  mov drv_no,0
  72.  mov ah,0 ; reset
  73.  mov dl,0
  74.  int 13h
  75.  mov dx,offset mcrlf
  76.  call decode_ah
  77. loop2:
  78.  mov al,drv_no
  79.  add al,'A'
  80.  mov drvlet,al
  81.  mov dx,offset mdrive
  82.  call prt
  83.  mov ah,16h
  84.  mov dl,drv_no
  85.  int 13h
  86.  mov dx,offset mnochg
  87.  call decode_ah
  88.  mov dx,offset mread
  89.  call prt
  90.  mov ax,0201h ;read 1
  91.  mov bx,offset lastb
  92.  mov cx,1 ;boot sector
  93.  mov dl,drv_no
  94.  mov dh,ch
  95.  int 13h
  96.  mov dx,offset mok
  97.  call decode_ah
  98.  inc drv_no
  99.  mov al,drv_max
  100.  cmp al,drv_no
  101.  jg loop2
  102.  mov dx,offset magain
  103.  call prt
  104.  mov ax,0c08h ; clear buffer & read a char
  105.  int 21h
  106.  cmp al,aesc
  107.  jnz test0
  108.  ret
  109. decode_ah:
  110.  or ah,ah
  111.  jz prt
  112.  mov dx,offset mnoadrm
  113.  cmp ah,02h
  114.  jz prt
  115.  mov dx,offset mnosec
  116.  cmp ah,02h
  117.  jz prt
  118.  mov dx,offset mcrc
  119.  cmp ah,02h
  120.  jz prt
  121.  mov dx,offset mctrl
  122.  cmp ah,20h
  123.  jz prt
  124.  mov dx,offset mseek
  125.  cmp ah,40h
  126.  jz prt
  127.  mov dx,offset myeschg
  128.  cmp ah,06h
  129.  jz prt
  130.  mov dx,offset mnotrdy
  131.  cmp ah,80h
  132.  jz prt
  133.  mov dx,offset munexp
  134. prt:
  135.  mov ah,9
  136.  int 21h
  137.  ret
  138. lastb equ $
  139. cseg ends
  140.  end start
  141.