home *** CD-ROM | disk | FTP | other *** search
/ OS/2 Shareware BBS: 10 Tools / 10-Tools.zip / mmpm21tk.zip / TK / FSSHT / SEEKCALC.ASM < prev    next >
Assembly Source File  |  1993-02-25  |  3KB  |  132 lines

  1.         TITLE   D:\me10\msrc\COMMON\seekcalc.c
  2.         .386
  3.         .387
  4.         INCLUDELIB OS2386.LIB
  5.         INCLUDELIB dde4mbs.lib
  6.         INCLUDELIB dde4mbm.lib
  7. CODE32  SEGMENT DWORD USE32 PUBLIC 'CODE'
  8. CODE32  ENDS
  9. DATA32  SEGMENT DWORD USE32 PUBLIC 'DATA'
  10. DATA32  ENDS
  11. CONST32 SEGMENT DWORD USE32 PUBLIC 'CONST'
  12. CONST32 ENDS
  13. BSS32   SEGMENT DWORD USE32 PUBLIC 'BSS'
  14. BSS32   ENDS
  15. DGROUP  GROUP CONST32, BSS32, DATA32
  16.         ASSUME  CS:FLAT, DS:FLAT, SS:FLAT, ES:FLAT
  17.         EXTRN   _DosFlatToSel:PROC
  18.         EXTRN   _DosSelToFlat:PROC
  19.         EXTRN   _dllentry:PROC
  20. DATA32  SEGMENT
  21.         DD      _dllentry
  22. DATA32  ENDS
  23. BSS32   SEGMENT
  24. BSS32   ENDS
  25. CONST32 SEGMENT
  26. CONST32 ENDS
  27. CODE32  SEGMENT
  28.  
  29. ;************************************
  30. ;  Mmtime2Bytes coversion routine
  31. ;  Function - Converts an mmtime
  32. ;             value to byte value.
  33. ;************************************
  34.  
  35.         ALIGN 04H
  36.         PUBLIC Mmtime2Bytes
  37. Mmtime2Bytes    PROC
  38.         PUSH    EBP
  39.         MOV     EBP,ESP
  40.  
  41.         MOV     EAX,[EBP+0cH];  lSeekPoint
  42.         CDQ
  43.         IDIV    DWORD PTR [EBP+010H];   mmtimePerUnit
  44.         MOV     ECX,[EBP+08H];  ulBytesPerUnit
  45.         IMUL    ECX,EAX
  46.         MOV     EAX,[EBP+014H]; lByteSeekPoint
  47.         MOV     [EAX],ECX
  48.  
  49.    JNO   NOOVERFLOW
  50.         MOV     EAX,01H
  51.         JMP     FELB1
  52.  
  53. NOOVERFLOW:
  54.         MOV     EAX,00H
  55.         JMP     FELB1
  56.         ALIGN 04H
  57.  
  58. FELB1:
  59.         LEAVE
  60.         RET
  61. Mmtime2Bytes    ENDP
  62.  
  63. ;************************************
  64. ;  Bytes2Mmtime coversion routine
  65. ;  Function - Converts a byte value
  66. ;             to an mmtime value.
  67. ;************************************
  68.  
  69.         ALIGN 04H
  70.  
  71.         PUBLIC Bytes2Mmtime
  72. Bytes2Mmtime    PROC
  73.         PUSH    EBP
  74.         MOV     EBP,ESP
  75.  
  76.         MOV     ECX,[EBP+08H];  ulBytesPerUnit
  77.         MOV     EAX,[EBP+0cH];  lSeekPoint
  78.         CDQ
  79.         IDIV    ECX
  80.         MOV     ECX,EAX
  81.         IMUL    ECX,[EBP+010H]; mmtimePerUnit
  82.         MOV     EAX,[EBP+014H]; lByteSeekPoint
  83.         MOV     [EAX],ECX
  84.  
  85.    JNO   NOTOVERFLOW
  86.         MOV     EAX,01H
  87.         JMP     FELB2
  88.  
  89. NOTOVERFLOW:
  90.         MOV     EAX,00H
  91.         JMP     FELB2
  92.         ALIGN 04H
  93.  
  94. FELB2:
  95.         LEAVE
  96.         RET
  97. Bytes2Mmtime    ENDP
  98.  
  99. ;************************************
  100. ;  AddNCheck coversion routine
  101. ;  Function - Add two values together
  102. ;             and check for an overflow
  103. ;************************************
  104.  
  105.         ALIGN 04H
  106.  
  107.         PUBLIC AddNCheck
  108. AddNCheck       PROC
  109.         PUSH    EBP
  110.         MOV     EBP,ESP
  111.  
  112.         MOV     ECX,[EBP+0cH];  lValue2
  113.         ADD     ECX,[EBP+08H];  lValue1
  114.         MOV     EAX,[EBP+010H]; lResult
  115.         MOV     [EAX],ECX
  116.  
  117.    JNO  NOOVERFLOW2
  118.         MOV     EAX,01H
  119.         JMP     FELB3
  120.  
  121. NOOVERFLOW2:
  122.         MOV     EAX,00H
  123.         JMP     FELB3
  124.         ALIGN 04H
  125.  
  126. FELB3:
  127.         LEAVE
  128.         RET
  129. AddNCheck       ENDP
  130. CODE32  ENDS
  131. END
  132.